From 3d2555e4993d697fdc271d6cb7313dbfd5df51a4 Mon Sep 17 00:00:00 2001 From: mixmix Date: Wed, 5 Jun 2019 13:47:52 +1200 Subject: [PATCH 1/5] upgrade to ws@7 --- package.json | 2 +- server.js | 12 +++--------- test/error.js | 7 ++----- test/server.js | 8 ++++---- 4 files changed, 10 insertions(+), 19 deletions(-) diff --git a/package.json b/package.json index b999244..9a61fe4 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,7 @@ "dependencies": { "relative-url": "^1.0.2", "safe-buffer": "^5.1.1", - "ws": "^1.1.0" + "ws": "^7.0.0" }, "devDependencies": { "mapleTree": "^0.5.1", diff --git a/server.js b/server.js index 123b10b..d833cff 100644 --- a/server.js +++ b/server.js @@ -1,6 +1,5 @@ var ws = require('./') var WebSocket = require('ws') -var url = require('url') var http = require('http') var https = require('https') @@ -25,7 +24,7 @@ module.exports = !WebSocket.Server ? null : function (opts, onConnection) { }) } - var server = opts.server || + server = opts.server || (opts.key && opts.cert ? https.createServer(opts) : http.createServer()) var wsServer = new WebSocket.Server({ @@ -38,9 +37,9 @@ module.exports = !WebSocket.Server ? null : function (opts, onConnection) { proxy(server, 'request') proxy(server, 'close') - wsServer.on('connection', function (socket) { + wsServer.on('connection', function (socket, req) { var stream = ws(socket) - stream.remoteAddress = socket.upgradeReq.socket.remoteAddress + stream.remoteAddress = req.connection.remoteAddress emitter.emit('connection', stream) }) @@ -60,8 +59,3 @@ module.exports = !WebSocket.Server ? null : function (opts, onConnection) { emitter.address = server.address.bind(server) return emitter } - - - - - diff --git a/test/error.js b/test/error.js index d402165..13a996e 100644 --- a/test/error.js +++ b/test/error.js @@ -1,6 +1,5 @@ var test = require('tape'); var WebSocket = require('ws'); -var endpoint = require('./helpers/wsurl') + '/read'; var pull = require('pull-stream'); var ws = require('../'); @@ -14,7 +13,7 @@ test('test error', function (t) { pull.values(['x', 'y', 'z']), pull.through(null, function (err) { if(_err) { - t.strictEqual(err, _err); + t.deepEqual(err, _err); t.end(); } _err = err @@ -22,13 +21,12 @@ test('test error', function (t) { ws(new WebSocket('ws://localhost:34897/' + Math.random())), pull.collect(function (err) { if(_err) { - t.strictEqual(err, _err); + t.deepEqual(err, _err); t.end(); } _err = err }) ) - }) //connect to a server that does not exist, and check that it errors. @@ -44,7 +42,6 @@ test('test error', function (t) { }) - test('close', function (t) { server.close() t.end() diff --git a/test/server.js b/test/server.js index b6361a5..34b5135 100644 --- a/test/server.js +++ b/test/server.js @@ -3,8 +3,8 @@ var mapleTree = require('mapleTree'); var port = process.env.ZUUL_PORT || process.env.PORT || 3000; module.exports = function () { -var router = new mapleTree.RouteTree(); -var wss = new WebSocketServer({ port: port }); + var router = new mapleTree.RouteTree(); + var wss = new WebSocketServer({ port: port }); router.define('/read', function(ws) { var values = ['a', 'b', 'c', 'd']; @@ -27,8 +27,8 @@ var wss = new WebSocketServer({ port: port }); }); }); - wss.on('connection', function(ws) { - var match = router.match(ws.upgradeReq.url); + wss.on('connection', function(ws, req) { + var match = router.match(req.url); if (match && typeof match.fn == 'function') { match.fn(ws); } From d0e40f02017c913ed04fb8ed3fa857da0b23bfae Mon Sep 17 00:00:00 2001 From: Dominic Tarr Date: Thu, 6 Jun 2019 14:15:10 +0200 Subject: [PATCH 2/5] handle weird new error behaviour from recent ws module --- sink.js | 2 +- source.js | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/sink.js b/sink.js index 349dfbe..7cb043d 100644 --- a/sink.js +++ b/sink.js @@ -40,7 +40,7 @@ module.exports = function(socket, opts) { // socket ready? ready(socket, function(end) { if (end) { - return read(end, function () {}); + return read(end === true ? true : end.error, function () {}); } socket.send(data); nextTick(function() { diff --git a/source.js b/source.js index 887bd6e..5b97910 100644 --- a/source.js +++ b/source.js @@ -46,10 +46,10 @@ module.exports = function(socket, cb) { ended = evt; if(!started) { started = true - cb && cb(evt) + cb && cb(evt.error) } if (receiver) { - receiver(ended) + receiver(ended.error) } }); From 87cd7593f719882fbc630166d98e3f1ab2af9f19 Mon Sep 17 00:00:00 2001 From: Dominic Tarr Date: Thu, 6 Jun 2019 14:15:41 +0200 Subject: [PATCH 3/5] change tests back to how they were before --- test/error.js | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/test/error.js b/test/error.js index 13a996e..fea0aae 100644 --- a/test/error.js +++ b/test/error.js @@ -13,7 +13,7 @@ test('test error', function (t) { pull.values(['x', 'y', 'z']), pull.through(null, function (err) { if(_err) { - t.deepEqual(err, _err); + t.strictEqual(err, _err); t.end(); } _err = err @@ -21,7 +21,7 @@ test('test error', function (t) { ws(new WebSocket('ws://localhost:34897/' + Math.random())), pull.collect(function (err) { if(_err) { - t.deepEqual(err, _err); + t.strictEqual(err, _err); t.end(); } _err = err @@ -46,3 +46,10 @@ test('close', function (t) { server.close() t.end() }) + + + + + + + From 2f1da03016c8fb9aa8642b8244b463920bfbe34e Mon Sep 17 00:00:00 2001 From: Dominic Tarr Date: Thu, 6 Jun 2019 14:16:40 +0200 Subject: [PATCH 4/5] use strict --- ready.js | 1 + server.js | 1 + sink.js | 1 + source.js | 1 + 4 files changed, 4 insertions(+) diff --git a/ready.js b/ready.js index afb86b4..a19edcc 100644 --- a/ready.js +++ b/ready.js @@ -1,3 +1,4 @@ +'use strict' module.exports = function(socket, callback) { var remove = socket && (socket.removeEventListener || socket.removeListener); diff --git a/server.js b/server.js index d833cff..d27bcbc 100644 --- a/server.js +++ b/server.js @@ -1,3 +1,4 @@ +'use strict' var ws = require('./') var WebSocket = require('ws') var http = require('http') diff --git a/sink.js b/sink.js index 7cb043d..3b15464 100644 --- a/sink.js +++ b/sink.js @@ -1,3 +1,4 @@ +'use strict' var ready = require('./ready'); /** diff --git a/source.js b/source.js index 5b97910..b8fa2d6 100644 --- a/source.js +++ b/source.js @@ -1,3 +1,4 @@ +'use strict' /** ### `source(socket)` From 40a0d0f467ac9e4589ee5b6cabf3f33dc9d79408 Mon Sep 17 00:00:00 2001 From: mixmix Date: Sat, 8 Jun 2019 22:23:17 +1200 Subject: [PATCH 5/5] fix tests for multiserver --- server.js | 1 + 1 file changed, 1 insertion(+) diff --git a/server.js b/server.js index d27bcbc..d2cb35a 100644 --- a/server.js +++ b/server.js @@ -39,6 +39,7 @@ module.exports = !WebSocket.Server ? null : function (opts, onConnection) { proxy(server, 'close') wsServer.on('connection', function (socket, req) { + socket.upgradeReq = req // mix: kinda gross hack to preserve the API of duplex.js, but might confuse users... var stream = ws(socket) stream.remoteAddress = req.connection.remoteAddress emitter.emit('connection', stream)