From 97d38dd4ee9ae37c3c307f601dfee0f8b3b6437f Mon Sep 17 00:00:00 2001 From: tomsmeding Date: Sat, 18 Mar 2017 22:33:00 +0100 Subject: Add websocket translation script --- websockets/server.js | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100755 websockets/server.js (limited to 'websockets/server.js') diff --git a/websockets/server.js b/websockets/server.js new file mode 100755 index 0000000..c6af67f --- /dev/null +++ b/websockets/server.js @@ -0,0 +1,45 @@ +#!/usr/bin/env node +const net=require("net"); +const WebSocket=require("ws"); + +const PORT=29546; + +const upstream={ + host: "localhost", + port: 29536 +}; + + +const server=new WebSocket.Server({port:PORT},()=>{ + console.log(`Listening for websocket http requests on port ${PORT}`); +}); +server.on("connection",(sock)=>{ + let netconn=null; + let buffer=[]; + + netconn=net.connect(upstream.port,upstream.host,()=>{ + for(const item of buffer){ + netconn.write(item); + } + buffer=[]; + }); + netconn.on("close",()=>{ + sock.close(); + }); + netconn.on("data",(data)=>{ + sock.send(data); + }); + + sock.on("close",()=>{ + netconn.end(); + }); + sock.on("message",(data)=>{ + if(netconn.connecting)buffer.push(data); + else netconn.write(data); + }); +}); + +process.on("SIGINT",()=>{ + console.log("Closing websocket server..."); + server.close(); +}); -- cgit v1.2.3-54-g00ecf