Javascript 无法使用Prosemirror进行协作编辑

Javascript 无法使用Prosemirror进行协作编辑,javascript,node.js,editor,prose-mirror,Javascript,Node.js,Editor,Prose Mirror,我正在使用prosemirror构建一个协作编辑器,多人可以在其中编辑一个文档。我根据这里给出的示例编写了以下代码- 这是代码- const { EditorState } = require('prosemirror-state'); const { EditorView } = require('prosemirror-view'); const { DOMParser } = require("prosemirror-model"); const {schema} = require("

我正在使用prosemirror构建一个协作编辑器,多人可以在其中编辑一个文档。我根据这里给出的示例编写了以下代码-

这是代码-

const { EditorState } = require('prosemirror-state'); 
const { EditorView } = require('prosemirror-view');
const { DOMParser } = require("prosemirror-model");
const {schema} = require("./schema");
var collab = require("prosemirror-collab");


function Authority(doc) {
  this.doc = doc
  this.steps = []
  this.stepClientIDs = []
  this.onNewSteps = []
}

Authority.prototype.receiveSteps = function(version, steps, clientID) {
  if (version != this.steps.length) return

  var self = this
  // Apply and accumulate new steps
  steps.forEach(function(step) {
    self.doc = step.apply(self.doc).doc
    self.steps.push(step)
    self.stepClientIDs.push(clientID)
  })
  // Signal listeners
  this.onNewSteps.forEach(function(f) { f() })
}

Authority.prototype.stepsSince = function(version) {
  return {
    steps: this.steps.slice(version),
    clientIDs: this.stepClientIDs.slice(version)
  }
}

var auth = new Authority('');
collabEditor(auth)

function collabEditor(authority) {
  var view = new EditorView(document.querySelector("#editor"), {
    state: EditorState.create({schema: schema, plugins: [collab.collab()]}),
    dispatchTransaction: function(transaction) {
      var newState = view.state.apply(transaction)
      view.updateState(newState)
      var sendable = collab.sendableSteps(newState)
      if (sendable)
        authority.receiveSteps(sendable.version, sendable.steps,
                               sendable.clientID)
    }
  })
   authority.onNewSteps.push(function() {
    var newData = authority.stepsSince(collab.getVersion(view.state))
    view.dispatch(
      collab.receiveTransaction(view.state, newData.steps, newData.clientIDs))
  })

  return view
}
当我运行这段代码时(在安装了所有依赖项并在nodejs中设置了一个简单的服务器之后),我基本上能够编辑一个文本框,但我无法在chrome中打开两个选项卡并看到协作的发生。我做错了什么


我会喜欢一些反馈

这是一个简单、单页、无需外部通信设置的示例代码。因此,不,它不会与其他选项卡通信。为此,您必须将权限移动到其他地方,并设置页面以通过HTTP或websockets与它进行实际通信。(参见示例。)