diff --git a/package-lock.json b/package-lock.json index b04c8d2fc929349a6eeb464c98b17d74a4a32487..af4ca93e55f618d9e869aa3e1bfb4e595cd7fc37 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4862,7 +4862,6 @@ "filetransfer": "^2.0.4", "hark": "^1.2.0", "mockconsole": "0.0.1", - "pako": "^1.0.10", "rtcpeerconnection": "file:src/rtcpeerconnection", "socket.io-client": "^2.3.0", "webrtc-adapter": "^7.3.0", diff --git a/package.json b/package.json index 21bd2440a14d89b76244588458a3cbf2b2f4c630..38cc9623d196a30ce85e5f27239bfbd1b9a4caf7 100644 --- a/package.json +++ b/package.json @@ -27,9 +27,11 @@ "dotenv": "^8.2.0", "express": "^4.17.1", "liowebrtc": "file:src/liowebrtc", + "pako": "^1.0.10", "signalbuddy": "file:src/signalbuddy", "uuid": "^3.3.3", "webrtc-adapter": "^7.3.0", + "what-the-pack": "^2.0.3", "y-array": "^10.1.4", "y-map": "^10.1.3", "y-memory": "^8.0.9", diff --git a/src/liowebrtc b/src/liowebrtc index 9b066b28a56a902b7ba0fe1532508bf28f269604..7ba21cb4b05ac5ffa2ae46e398dbcb53a6329522 160000 --- a/src/liowebrtc +++ b/src/liowebrtc @@ -1 +1 @@ -Subproject commit 9b066b28a56a902b7ba0fe1532508bf28f269604 +Subproject commit 7ba21cb4b05ac5ffa2ae46e398dbcb53a6329522 diff --git a/src/y-webrtc/index.js b/src/y-webrtc/index.js index 4c5d4b91b7d6ed2d1b208b2c4198bfa9460d781b..ebf27c000f4b4c0b11014a9dde7b36b5a3034be2 100644 --- a/src/y-webrtc/index.js +++ b/src/y-webrtc/index.js @@ -2,6 +2,18 @@ "use strict" import LioWebRTC from "liowebrtc" +import MessagePack from "what-the-pack" +import pako from "pako" + +const { encode, decode } = MessagePack.initialize(2 ** 22) + +function compressPayload(payload) { + return pako.deflate(encode(payload)) +} + +function decompressPayload(payload) { + return decode(MessagePack.Buffer.from(pako.inflate(payload))) +} function extend(Y) { class WebRTC extends Y.AbstractConnector { @@ -45,7 +57,7 @@ function extend(Y) { }) this.webrtc.on("leftRoom", () => { - console.log("LEFT ROOM") + console.log("TODO: LEFT ROOM") }) this.webrtc.on("channelOpen", (dataChannel, peer) => { @@ -63,8 +75,6 @@ function extend(Y) { return } - console.log("ping", peer.id) - // Initial message in the handshake this.webrtc.whisper(peer, "tw-ml", "tw") @@ -77,11 +87,9 @@ function extend(Y) { this.webrtc.on("receivedPeerData", (type, message, peer) => { this.checkAndEnsureUser() - if (message.type !== "update") { - console.log("receivedData", peer.id, message) - } - if (type === "y-js") { + message = decompressPayload(message) + this.checkAndInsertPeer(peer.id) this.receiveMessage(peer.id, message) } else if (type === "tw-ml") { @@ -124,8 +132,6 @@ function extend(Y) { this.peers.add(uid) - console.log("createdPeer", uid) - this.userJoined(uid, "master") } @@ -137,8 +143,6 @@ function extend(Y) { this.peers.delete(uid) - console.log("removedPeer", uid) - this.userLeft(uid) } @@ -164,15 +168,15 @@ function extend(Y) { return } - console.log("send", uid, message) - - this.webrtc.whisper(this.webrtc.getPeerById(uid), "y-js", message) + this.webrtc.whisper( + this.webrtc.getPeerById(uid), + "y-js", + compressPayload(message), + ) } broadcast(message) { - if (message.type !== "update") console.log("broadcast", message) - - this.webrtc.shout("y-js", message) + this.webrtc.shout("y-js", compressPayload(message)) } isDisconnected() {