UNPKG

rocky

Version:

Full-featured, middleware-oriented, hackable HTTP and WebSocket proxy

54 lines (46 loc) 1.3 kB
const http = require('http') const expect = require('chai').expect const WebSocket = require('ws') const forward = require('../../../../lib/protocols/ws/passes/forward') const port = 8099 const targetPort = 8090 suite('forward', function () { test('valid', function (done) { var server = createServer(port, onUpgrade) var wss = createWebSocketServer(targetPort) var opts = { target: 'http://localhost:' + targetPort } createWebSocketClient('http://localhost:' + port) function onUpgrade (req, socket, head) { forward(opts, req, socket, head, assert) } function assert (err) { expect(err).to.not.exists wss.close() server.close(done) } }) }) function createWebSocketClient (url, onOpen) { var ws = new WebSocket(url) ws.on('open', function () { if (onOpen) onOpen(ws) }) return ws } function createWebSocketServer (port, onMessage) { var wss = new WebSocket.Server({ port: port }) wss.on('connection', function (ws) { ws.on('message', function (message) { if (onMessage) onMessage(message, ws) }) }) return wss } function createServer (port, wsHandler) { const server = http.createServer(function (req, res) { res.end() }) server.on('upgrade', wsHandler) server.listen(port) return server }