如何在同一个web应用的多个实例中实时更新DOM
JS - How to update DOM in realtime across multiple instances of the same web app?
我正在构建一个大规模的实时协作web应用程序。它是一个Web IDE,支持HTML, CSS &JS编程和一个舞台区域,将反映的结果,如JSFiddle, Plunker等
现在,它将支持多用户实时协作,查看web应用程序的相同实例的人将能够一起编写代码,这将反映所有开放实例。我已经弄清楚了竞争条件,会话管理等
我遇到的问题是
如何反映插入符号的输入和/或删除在这些多个实例中给人一种错觉,当一个人在打字,他实际上是在所有实例上打字。
另一件事是RactiveJS说它
只更新页面中过期的部分。乏味的DOM操纵是过去的事了。
这在他们的演示中是一个非常好的效果。想象一下,您在JSFiddle上,您不必每次都重新运行。我的问题是,他们是怎么做到的?它背后的概念是什么?
我不想为此使用任何库。我很擅长JS。我很难弄清楚这个算法。
我考虑过的事情:
- 肮脏的检查[但是,它是肮脏的,对吗?)
- Delta difference[但像ReactJS一样,它必须每次更新整个应用程序状态]
- 对象。观察[浏览器兼容性还不现实]
实时协作工具,允许并发编辑/操作对象/文本等,通常使用操作转换算法的一种变体。
OT 并不容易理解,而是更容易实现,所以我建议您看看已经准备好的库,例如:
- ShareJS
- race for Node
OT的工作原理与GIT
类似。作为对您在评论中发布的内容的更新。
你说你正在使用Python。我猜,您不会重新构建整个代码库,但请记住,实时协作工具通常从使用事件驱动的服务器端语言中受益良多。
既然你使用的是Python,你可以查看Twisted Framework
相关文章:
- 标记的实时更新,无需加载页面谷歌地图API V3
- 使用Ajax调用在服务器上实时更新页面
- 实时更新,无需刷新页面
- Dojo dGrid/dStore实时更新
- 如何在页面上进行实时更新
- 从JSON实时更新
- 我希望我的php/html网站上的JavaScript能够实时更新
- 使用php-js-msyql的实时更新消息系统
- 实时更新的持久连接
- Node js redis socket.io pubsub实时更新
- 在OpenCart中,我们如何实时更新数据
- Instagram实时更新没有回应
- 在react组件中使用ajax获取实时更新的数据
- 如何使用highchart在yii中添加实时更新图表
- 将实时更新传递到条纹结账金额
- JavaScript 从 1 个文本区域实时更新到多个文本区域
- 在 PHP / Javascript 中实时更新时间
- AngularJS将实时收集与REST同步,并获得实时更新
- 如何让人们通过实时更新在同一表单上进行协作
- 如何在同一个web应用的多个实例中实时更新DOM