diff --git a/examples/html-editor/index.js b/examples/html-editor/index.js index db4bd6ff..0a2668fd 100644 --- a/examples/html-editor/index.js +++ b/examples/html-editor/index.js @@ -8,7 +8,8 @@ Y({ connector: { name: 'websockets-client', url: 'http://127.0.0.1:1234', - room: 'html-editor-example6' + room: 'html-editor-example6', + // maxBufferLength: 100 }, share: { xml: 'XmlFragment()' // y.share.xml is of type Y.Xml with tagname "p" diff --git a/src/Connector.js b/src/Connector.js index 3033d0d6..5bcba919 100644 --- a/src/Connector.js +++ b/src/Connector.js @@ -213,7 +213,7 @@ export default function extendConnector (Y/* :any */) { self.broadcastOpBuffer = ops.slice(i) self.broadcast(encoder.createBuffer()) if (i !== length) { - setTimeout(broadcastOperations, 100) + self.whenRemoteResponsive().then(broadcastOperations) } } } @@ -225,6 +225,20 @@ export default function extendConnector (Y/* :any */) { } } + /* + * Somehow check the responsiveness of the remote clients/server + * Default behavior: + * Wait 100ms before broadcasting the next batch of operations + * + * Only used when maxBufferLength is set + * + */ + whenRemoteResponsive () { + return new Promise(function (resolve) { + setTimeout(resolve, 100) + }) + } + /* You received a raw message, and you know that it is intended for Yjs. Then call this function. */