aboutsummaryrefslogtreecommitdiff
path: root/websockets/server.js
diff options
context:
space:
mode:
authortomsmeding <tom.smeding@gmail.com>2017-03-18 22:33:00 +0100
committertomsmeding <tom.smeding@gmail.com>2017-03-18 22:33:00 +0100
commit97d38dd4ee9ae37c3c307f601dfee0f8b3b6437f (patch)
treec1af1a3806aebdd2925b8ba066444b688b80769c /websockets/server.js
parent012f9e4156919157bfff0d5ce8f105a04b0c4a70 (diff)
Add websocket translation script
Diffstat (limited to 'websockets/server.js')
-rwxr-xr-xwebsockets/server.js45
1 files changed, 45 insertions, 0 deletions
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();
+});