From e638b95982416e8d4baecda2db41c75e9e0a1046 Mon Sep 17 00:00:00 2001 From: Moritz Langenstein <ml5717@ic.ac.uk> Date: Wed, 16 Oct 2019 12:09:13 +0100 Subject: [PATCH] (ml5717) Enabled partial mesh option and use messenger as sender for yjs --- package-lock.json | 24 ++++++++++++------------ src/liowebrtc | 2 +- src/y-webrtc/index.js | 18 ++++++++++++------ 3 files changed, 25 insertions(+), 19 deletions(-) diff --git a/package-lock.json b/package-lock.json index bb033ce..15cbdc8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1112,9 +1112,9 @@ "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==" }, "bluebird": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.0.tgz", - "integrity": "sha512-aBQ1FxIa7kSWCcmKHlcHFlT2jt6J/l4FzC7KcPELkOJOsPOb/bccdhmIrKDfXhwFrmc7vDoDrrepFvGqjyXGJg==", + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.1.tgz", + "integrity": "sha512-DdmyoGCleJnkbp3nkbxTLJ18rjDsE4yCggEwKNXkeV123sPNfOCYeDoeuOY+F2FrSjO1YXcTU+dsy96KMy+gcg==", "dev": true }, "bn.js": { @@ -7096,9 +7096,9 @@ "dev": true }, "terser": { - "version": "4.3.8", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.3.8.tgz", - "integrity": "sha512-otmIRlRVmLChAWsnSFNO0Bfk6YySuBp6G9qrHiJwlLDd4mxe2ta4sjI7TzIR+W1nBMjilzrMcPOz9pSusgx3hQ==", + "version": "4.3.9", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.3.9.tgz", + "integrity": "sha512-NFGMpHjlzmyOtPL+fDw3G7+6Ueh/sz4mkaUYa4lJCxOPTNzd0Uj0aZJOmsDYoSQyfuVoWDMSWTPU3huyOm2zdA==", "dev": true, "requires": { "commander": "^2.20.0", @@ -7322,9 +7322,9 @@ "dev": true }, "uglify-js": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.6.1.tgz", - "integrity": "sha512-+dSJLJpXBb6oMHP+Yvw8hUgElz4gLTh82XuX68QiJVTXaE5ibl6buzhNkQdYhBlIhozWOC9ge16wyRmjG4TwVQ==", + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.6.2.tgz", + "integrity": "sha512-+gh/xFte41GPrgSMJ/oJVq15zYmqr74pY9VoM69UzMzq9NFk4YDylclb1/bhEzZSaUQjbW5RvniHeq1cdtRYjw==", "dev": true, "optional": true, "requires": { @@ -7567,9 +7567,9 @@ "dev": true }, "webpack": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.41.1.tgz", - "integrity": "sha512-ak7u4tUu/U63sCVxA571IuPZO/Q0pZ9cEXKg+R/woxkDzVovq57uB6L2Hlg/pC8LCU+TWpvtcYwsstivQwMJmw==", + "version": "4.41.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.41.2.tgz", + "integrity": "sha512-Zhw69edTGfbz9/8JJoyRQ/pq8FYUoY0diOXqW0T6yhgdhCv6wr0hra5DwwWexNRns2Z2+gsnrNcbe9hbGBgk/A==", "dev": true, "requires": { "@webassemblyjs/ast": "1.8.5", diff --git a/src/liowebrtc b/src/liowebrtc index f0b57a9..fda5000 160000 --- a/src/liowebrtc +++ b/src/liowebrtc @@ -1 +1 @@ -Subproject commit f0b57a9258b117b97e1b793de27f05b0c9d5e51f +Subproject commit fda5000adc956b2e3884d33e3a1352fbd9189f77 diff --git a/src/y-webrtc/index.js b/src/y-webrtc/index.js index d860ec2..499cf2d 100644 --- a/src/y-webrtc/index.js +++ b/src/y-webrtc/index.js @@ -28,10 +28,10 @@ function extend(Y) { this.webrtc = new LioWebRTC({ url: this.webrtcOptions.url, dataOnly: true, - /*network: { + constraints: { minPeers: 4, maxPeers: 8, - },*/ + }, }) this.peers = new Set() @@ -47,6 +47,8 @@ function extend(Y) { this.webrtc.on("channelOpen", (dataChannel, peer) => { this.checkAndEnsureUser() + console.log("dataChannel", dataChannel) + // Start a handshake to ensure both sides are able to use the channel function handshake(peer) { const _peer = this.webrtc.getPeerById(peer.id) @@ -73,14 +75,18 @@ function extend(Y) { this.webrtc.on("receivedPeerData", (type, message, peer) => { this.checkAndEnsureUser() + // Message could have been forwarded but yjs only needs to know about directly connected peers + const peerId = peer.forwardedBy ? peer.forwardedBy.id : peer.id + if (message.type !== "update") { - console.log("receivedData", peer.id, message) + console.log("receivedData", peerId, message) } if (type === "y-js") { - this.checkAndInsertPeer(peer.id) - this.receiveMessage(peer.id, message) - } else if (type === "tw-ml") { + this.checkAndInsertPeer(peerId) + this.receiveMessage(peerId, message) + } else if (type === "tw-ml" && !peer.forwardedBy) { + // Handshakes can only be sent and received directly if (message === "tw") { // Response message in the handshake this.webrtc.whisper(peer, "tw-ml", "ml") -- GitLab