Compare commits

..

4 Commits

Author SHA1 Message Date
Kevin Jahns
eeacb5665a v13.0.0-21 -- distribution files 2017-10-02 15:52:23 +02:00
Kevin Jahns
c8ca80d15f 13.0.0-21 2017-10-02 15:52:11 +02:00
Kevin Jahns
be282c8338 fix lint 2017-10-02 15:50:56 +02:00
Kevin Jahns
829a094c6d check for responsiveness when maxBufferSize is set 2017-10-02 15:45:23 +02:00
7 changed files with 39 additions and 10 deletions

View File

@@ -9,6 +9,7 @@ Y({
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

@@ -1,6 +1,6 @@
{ {
"name": "yjs", "name": "yjs",
"version": "13.0.0-20", "version": "13.0.0-21",
"description": "A framework for real-time p2p shared editing on any data", "description": "A framework for real-time p2p shared editing on any data",
"main": "./y.node.js", "main": "./y.node.js",
"browser": "./y.js", "browser": "./y.js",

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.
*/ */

8
y.js

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,7 +1,7 @@
/** /**
* yjs - A framework for real-time p2p shared editing on any data * yjs - A framework for real-time p2p shared editing on any data
* @version v13.0.0-20 * @version v13.0.0-21
* @license MIT * @license MIT
*/ */
@@ -841,7 +841,7 @@ 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);
} }
} }
} }
@@ -853,6 +853,20 @@ 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.
*/ */

File diff suppressed because one or more lines are too long