多对多流共享状态的设计模式



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

然而,这会导致一个临时的共享状态,而我希望用户能够在任何时候跳上并看到保留的共享状态。我认为这可能需要在后端和前端共享渲染代码,这样客户端渲染事件作为他们的流,但服务器可以发送原始图像数据当客户端关联。

所以我的问题是:对于这种项目,我应该注意哪些其他的设计模式?这是一个有趣的学习项目,所以这是一个开放式的问题,但我将接受一个包含一些有用的参考资料的答案。

所以我的问题是:还有哪些其他的设计模式是我应该对这类项目有什么认识吗?

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

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

相关内容

  • 没有找到相关文章

最新更新