与paper.js同时绘图

Eug*_*y89 7 javascript html5 paperjs

我有一个应用程序,基于paper.js处理绘制小部件.几个用户可以同时绘制,并且实时更改相互广播.问题是我需要存储更改并在加载文档时显示绘制的图像.

自然的解决方案是存储客户端在DB中发送的命令.但绘制的图像可以包含数千个命令,我可以拥有数十个图像.因此,当我打开文档从服务器获取命令列表时,绘图可能会花费太多时间.

是否有更好的方法来存储客户端之间的图像和交互?

请注意,我有一个缩放功能,因此存储光栅不是一个选项.

更新:如果我正在存储图像(例如,在a中BLOB),则不清楚如何应用实时更改.每次传递图像不是我想要的解决方案.

Bra*_*ram 3

如果您要将绘图保存为图像,您有几种可能的解决方案。

  1. 将项目保存在文件夹中的某个位置,并将目录路径 + 文件名保存在数据库中
  2. 将数据库中的图像保存为blob. 不过,Blob 确实是数据库密集型的。

有一些关于 blob 的有趣文章。比如微软的这个。

正如常识所预期的那样,小于 256K 的对象最好存储在数据库中,而大于 1M 的对象最好存储在文件系统中。

因此,从性能角度来看,将图像保存到目录中将是一个更好的解决方案。

还可以导出svg绘制图像的文件。(信息)我不知道这是否对你有帮助,但这是我的个人经历。我同意你的观点,将数千条命令存储到数据库中并不是最好的解决方案。因此,您可能想尝试将图像保存在某处,但如果实现了该功能,您将失去编辑图像的能力。

更新:

如果您不想保存,blob最好的解决方案是每次进行编辑时“渲染”图像。因此,当有人打开绘图时,您可以执行所有命令。并且仅在触发编辑时应用最新命令。

有多种选择可以实现这一目标。正如吉米钱德拉所说,firebase这将是一个很好的解决方案。他们还提供了一个教程,其中几乎包含了您想要实现的一切。x(使用和实时坐标绘制图像y)也许你必须看看这一点。

有关 Firebase 的更多信息。

Firebase 是一个强大的 API,用于实时存储和同步数据

我相信这正是您想要实现的目标。您可以在这里尝试他们的完整教程。

您可能考虑的另一个选择是nodejs。我见过人们使用nodejs聊天系统将数据发送给所有其他用户。如果你可以发送数据,我相信你可以用它来绘制图像。

最后由您决定要使用哪种技术。因此,我认为您可能必须像我建议的那样研究一些解决方案,如果您在集成该技术时遇到麻烦,请提出不同的问题。