Javascript 一起使用Websocket和http服务器

Javascript 一起使用Websocket和http服务器,javascript,node.js,express,websocket,Javascript,Node.js,Express,Websocket,我同时使用websocket和http服务器,为它们分配不同的端口,当post请求命中时,它使用websocket向客户端发送消息,当客户端响应消息时,http请求的响应被发送 我的问题是我想创建多个WebSocket,但只有一个https服务器,我已经尝试了一些方法,但无法做到这一点 当前用于创建websocket和httpserver的代码为 const app = require('express')() bodyParser = require('body-parser') app.us

我同时使用websocket和http服务器,为它们分配不同的端口,当post请求命中时,它使用websocket向客户端发送消息,当客户端响应消息时,http请求的响应被发送

我的问题是我想创建多个WebSocket,但只有一个https服务器,我已经尝试了一些方法,但无法做到这一点

当前用于创建websocket和httpserver的代码为

const app = require('express')()
bodyParser = require('body-parser')
app.use(bodyParser.json())
const net = require('net');
var client;
var res1,currentReq;

//----------------------------------------------------------------------------
// http requests listener
//----------------------------------------------------------------------------

app.listen(8001, () => console.log('Http server listening on port 8001'));

//----------------------------------------------------------------------------
// http requests handling
//----------------------------------------------------------------------------

app.post('/getUser', (req, res) => {
    console.log(req.body)
res1 = res;
currentReq='getUser';
    client.write('{"route":"/","data":{"username":"' + req.body.username +'"}, "res": "' + res + '"}');
//res.end('{"Extension":"' +' data '+ '"}');

console.log("/getUser finished");
   // res.end('{"Extension":"' +' data '+ '"}');

  });

//----------------------------------------------------------------------------
// Establishing tcp connection for incoming requests
//----------------------------------------------------------------------------

var server = net.createServer(function(connection) {
   console.log ('client has connected successfully!');
   client = connection;
   client.on('data',function(data){
   switch(currentReq) 
   {
       case 'getUser' :
                    console.log('send get user response');
                    res1.end(data);
                    break;

   }

    console.log(data.toString());
            //res1.end(data);

  });

   connection.pipe(connection);
});


//----------------------------------------------------------------------------
// listener for tcp connections
//----------------------------------------------------------------------------

server.listen(8000, function() {
   console.log('server for localhost is listening on port 8000');
   console.log('server bound address is: ' + server.address ());
});

嗯,webSocket客户端必须连接到webSocket服务器,而不是普通的TCP服务器。webSocket有一个完整的连接方案(从http请求开始,然后升级到webSocket协议)、加密安全方案和数据帧格式。你必须使用所有这些。因此,您的
net.createServer()
无法用于webSocket。您可以使用一台http服务器来处理常规http请求和传入的webSocket连接。webSocket服务器代码可以侦听传入的http请求,并仅挑选出实际上是webSocket连接请求的请求。不需要在单独的端口上有多个单独的服务器。另外,
connection.pipe(连接)毫无意义。现在还不清楚你的想法是什么,或者你想做什么。您不必自吹自擂。我是第一次编写websocket代码,感谢您指出,我将研究它的作用。通常没有理由为websocket连接使用单独的端口。它可以愉快地与http服务器共享相同的端口/服务器。而且,我从来没有看到将多个websocket服务器放在同一主机上的好理由,因为您可以为许多不同的事情使用相同的websocket连接,就像您为许多不同类型的请求使用相同的http服务器一样。在我看来,你把事情复杂化了。