Javascript 如何结合Quill富文本编辑器和socket.io来交换增量

Javascript 如何结合Quill富文本编辑器和socket.io来交换增量,javascript,socket.io,quill,Javascript,Socket.io,Quill,我正在尝试将Quill富文本编辑器和socket.io结合起来。我想有一个类似谷歌文档的编辑器,人们可以同时编辑 我正在努力通过网络发送和应用“文本更改”事件,代码如下: fullEditor.on('text-change', function(delta, source) { if (source === 'user') { socket.emit('text change', {'who': my_id, 'delta': JSON.stringify(delta)});

我正在尝试将Quill富文本编辑器和socket.io结合起来。我想有一个类似谷歌文档的编辑器,人们可以同时编辑

我正在努力通过网络发送和应用“文本更改”事件,代码如下:

fullEditor.on('text-change', function(delta, source) {
  if (source === 'user') {
    socket.emit('text change', {'who': my_id, 'delta': JSON.stringify(delta)});
  }
});


socket.on('text change', function(msg){
  if(msg.who != my_id) {
      var del = JSON.parse(msg.delta);
      var Delta = fullEditor.getContents().constructor;
      var delta = new Delta(del.startLength,del.endLength,del.ops);
      fullEditor.updateContents( delta );
    }
    });
这是失败的

未捕获类型错误:未定义不是函数| quill.js:8020

在另一端,我有一个简单的散列,quill需要特定类型的对象(InsertOp等)


有什么想法可以让它工作吗?

问题是updateContents需要一个Delta对象,而当您创建Delta对象时,Delta构造函数需要一个操作对象数组

最新版本(v0.14.0)更新了updateContents以获取普通javascript对象,因此您应该能够:

socket.on('text change', function(msg){
  if(msg.who != my_id) {
    var del = JSON.parse(msg.delta);
    fullEditor.updateContents( del );
  }
});
注意:要实现像谷歌文档那样的实时协作,您还需要某种冲突解决方案。最简单的是一个平台化的解决方案,或者您可以使用类似的库来实现自己的解决方案