在没有外部托管服务器的情况下智能地在浏览器中同步文本

时间:2016-11-15 18:00:57

标签: javascript websocket synchronization

在没有服务器的情况下,在JavaScript中智能地同步多个字符串的最简单方法是什么?

  • 用户将编辑与Dropbox同步的文档。如果用户的更新与Dropbox版本的更新冲突,我想自动合并所有更新。
  • 浏览器中还有多个需要同步的文档“视图”,但没有延迟,因此冲突的更改应该不是问题。但是,这意味着两个以上对等体之间的同步(至少其中一个具有显着滞后)。
  • 在浏览器中运行同步“服务器”是可以的,但我正在尝试避免使用外部托管服务器。

以前有很多协作编辑工作,但他们通常会假设一个外部托管的服务器。例如:

似乎可以通过编写实现WebSockets API部分的一些存根来使DigDB适用于嵌入浏览器的内部服务器:

  1. 服务器:公开写入和读取JavaScript对象(WebSocketJSONStream)的双工流。然后将该流直接传递到share.listen
  2. 客户端:创建一个实现WebSocket规范的对象,并将其传递给ShareDB.Connection构造函数。
  3. 我会接受任何答案,帮助我让ShareDB完全在浏览器中工作或通过更简单的方法同步我的JavaScript字符串。

    关于改编ShareDB的问题:

    • 需要实施哪些接口?它们只是方法,还是我还需要处理消息?
    • 是否可以使用浏览器的内置WebSockets API(我的初步调查显示“不行”。)

1 个答案:

答案 0 :(得分:0)

这个仅限客户端的演示完全符合我的需要:

Collaborative Editing via OT

blue-ot.js source code on GitHub