aboutsummaryrefslogtreecommitdiff
path: root/websockets/server.js
diff options
context:
space:
mode:
Diffstat (limited to 'websockets/server.js')
-rwxr-xr-xwebsockets/server.js98
1 files changed, 49 insertions, 49 deletions
diff --git a/websockets/server.js b/websockets/server.js
index 2184793..86307e6 100755
--- a/websockets/server.js
+++ b/websockets/server.js
@@ -2,7 +2,7 @@
const fs=require("fs");
const net=require("net");
const https=require("https");
-const WebSocket=require("uws");
+const WebSocket=require("uWebSockets.js");
const PORT=29546;
@@ -29,60 +29,60 @@ if(process.getuid()==0){
}
-let httpsServer,wsServer;
+let wsServer;
if(httpsConfig){
- httpsServer=https.createServer(httpsConfig,(req,res)=>{
- console.log("Got request in httpsServer?");
- // req.socket.end(); // ?
- });
- wsServer=new WebSocket.Server({server:httpsServer},()=>{
- console.log(`Bound websocket server to https server`);
+ wsServer=WebSocket.SSLApp({
+ key_file_name: httpsConfig.key,
+ cert_file_name: httpsConfig.cert,
});
} else {
- wsServer=new WebSocket.Server({port:PORT},()=>{
- console.log(`Listening for websocket http requests on port ${PORT}`);
- });
+ wsServer=WebSocket.App();
}
-wsServer.on("connection",(sock)=>{
- let netconn=null;
- let buffer=[];
- let linebuf="";
- netconn=net.connect(upstream.port,upstream.host,()=>{
- for(const item of buffer){
- netconn.write(item+"\n");
- }
- buffer=[];
- });
- netconn.on("close",()=>{
- sock.close();
- });
- netconn.on("data",(data)=>{
- linebuf+=data;
- let idx;
- while((idx=linebuf.indexOf("\n"))!=-1){
- sock.send(linebuf.slice(0,idx));
- linebuf=linebuf.slice(idx+1);
- }
- });
+wsServer=wsServer.ws("/*",{
+ open: sock=>{
+ const stateobj={netconn: null, buffer: [], sock_closed: false};
+ sock["tomsgdata"]=stateobj;
+ let linebuf="";
- sock.on("close",()=>{
- netconn.end();
- });
- sock.on("message",(data)=>{
- if(netconn.connecting)buffer.push(data);
- else netconn.write(data+"\n");
- });
+ stateobj.netconn=net.connect(upstream.port,upstream.host,()=>{
+ for(const item of stateobj.buffer){
+ stateobj.netconn.write(item);
+ stateobj.netconn.write("\n");
+ }
+ stateobj.buffer=[];
+ });
+ stateobj.netconn.on("close",()=>{
+ if(!stateobj.sock_closed)sock.close();
+ });
+ stateobj.netconn.on("data",(data)=>{
+ linebuf+=data;
+ let idx;
+ while((idx=linebuf.indexOf("\n"))!=-1){
+ sock.send(linebuf.slice(0,idx));
+ linebuf=linebuf.slice(idx+1);
+ }
+ });
+ },
+ message: (sock,data,isBinary)=>{
+ const stateobj=sock["tomsgdata"];
+ data=new Uint8Array(data);
+ if(stateobj.netconn.connecting){
+ stateobj.buffer.push(data);
+ } else {
+ stateobj.netconn.write(data);
+ stateobj.netconn.write("\n");
+ }
+ },
+ close: sock=>{
+ const stateobj=sock["tomsgdata"];
+ stateobj.sock_closed=true;
+ stateobj.netconn.end();
+ }
});
-if(httpsConfig){
- httpsServer.listen(PORT,()=>{
- console.log(`HTTPS server bound on port ${PORT}`);
- });
-}
-
-process.on("SIGINT",()=>{
- console.log("Closing server...");
- wsServer.close();
- if(httpsConfig)httpsServer.close();
+wsServer=wsServer.listen(PORT,listenSocket=>{
+ if(listenSocket){
+ console.log(`Websocket server bound on port ${PORT}`);
+ }
});