2

我正在编写一个有趣的在线白板应用程序,多个用户查看同一个白板并可以在上面绘图。我正在使用 websockets(前端的 vanilla JS,后端的 Scala),现在基本上只是从一个用户向其他用户广播鼠标事件,并在客户端渲染图像。

但是,这会导致暂时的共享状态,而我希望用户能够随时跳上并查看保留的共享状态。我认为这可能需要在后端和前端共享渲染代码,以便客户端在流式传输时渲染事件,但服务器可以在客户端关联时发送原始图像数据。

所以我的问题是:对于这种项目,我应该注意哪些其他设计模式?这是一个娱乐/学习项目,所以这是一个开放式问题,但我会接受一个包含此类数据流的一些有用参考的答案。

4

1 回答 1

3

所以我的问题是:对于这种项目,我应该注意哪些其他设计模式?

您不必在服务器上有渲染代码。您可以只保存导致当前白板的所有累积事件并将它们发送给新客户端,让新客户端为自己呈现白板,就好像它们在所有事件最初发生时正在监听一样。

如果这比实际数据多,那么您可以压缩原始事件。例如,一条直线或接近直线的线段不需要所有中间的鼠标位置,它实际上只需要线段的第一个和最后一个位置。

于 2016-08-17T16:49:00.833 回答