Skip to content
This repository was archived by the owner on Jun 3, 2020. It is now read-only.

Commit 7a21702

Browse files
committed
Add length-prefixed-stream message framing to the peersockets
1 parent b284e60 commit 7a21702

4 files changed

Lines changed: 17 additions & 22 deletions

File tree

hyperswarm/peersocket.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
const EventEmitter = require('events')
22
const crypto = require('crypto')
33
const createSwarm = require('@hyperswarm/network')
4+
const lpstream = require('length-prefixed-stream')
45
const schemas = require('./peersocket-schemas')
56
const {extractOrigin} = require('../../../lib/strings')
67

@@ -147,6 +148,8 @@ function handleConnection (swarm, socket, details) {
147148
if (lobby) {
148149
// create the connection
149150
var id = ++lobby.connIdCounter
151+
var encoder = lpstream.encode()
152+
var decoder = lpstream.decode()
150153
var conn = {
151154
id,
152155
socket,
@@ -155,9 +158,10 @@ function handleConnection (swarm, socket, details) {
155158
}
156159
lobby.connections.add(conn)
157160
lobby.emit('connection', {socketInfo: {id}})
161+
encoder.pipe(socket).pipe(decoder)
158162

159163
// wire up events
160-
socket.on('data', message => {
164+
decoder.on('data', message => {
161165
try {
162166
message = decodeMsg(message)
163167
conn.events.emit('message', {message})

package-lock.json

Lines changed: 10 additions & 20 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@
4848
"hyperdrive-to-zip-stream": "^2.1.1",
4949
"identify-filetype": "^1.0.0",
5050
"into-stream": "^3.1.0",
51+
"length-prefixed-stream": "^1.6.0",
5152
"lodash.debounce": "^4.0.8",
5253
"lodash.get": "^4.4.2",
5354
"lodash.isequal": "^4.5.0",

web-apis/bg/experimental/peer-socket.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ module.exports = {
5050
var conn = getLobbyConnection(this.sender, tabIdentity, lobbyType, lobbyName, socketId)
5151
if (conn) {
5252
return new Promise((resolve, reject) => {
53-
conn.socket.write(PeerSocket.encodeMsg(data), err => {
53+
conn.encoder.write(PeerSocket.encodeMsg(data), err => {
5454
if (err) {
5555
console.error('Error writing to PeerSocket', err)
5656
reject(new Error('Failed to send message'))

0 commit comments

Comments
 (0)