check for responsiveness when maxBufferSize is set

This commit is contained in:
Kevin Jahns 2017-10-02 15:45:23 +02:00
parent 725273167e
commit 829a094c6d
2 changed files with 17 additions and 2 deletions

View File

@ -8,7 +8,8 @@ Y({
connector: { connector: {
name: 'websockets-client', name: 'websockets-client',
url: 'http://127.0.0.1:1234', url: 'http://127.0.0.1:1234',
room: 'html-editor-example6' room: 'html-editor-example6',
// maxBufferLength: 100
}, },
share: { share: {
xml: 'XmlFragment()' // y.share.xml is of type Y.Xml with tagname "p" xml: 'XmlFragment()' // y.share.xml is of type Y.Xml with tagname "p"

View File

@ -213,7 +213,7 @@ export default function extendConnector (Y/* :any */) {
self.broadcastOpBuffer = ops.slice(i) self.broadcastOpBuffer = ops.slice(i)
self.broadcast(encoder.createBuffer()) self.broadcast(encoder.createBuffer())
if (i !== length) { 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. You received a raw message, and you know that it is intended for Yjs. Then call this function.
*/ */