Node.js 编写Websocket服务器

Node.js 编写Websocket服务器,node.js,http,websocket,server,Node.js,Http,Websocket,Server,我正在使用nodejs编写websocket服务器,使用本文作为我的guid 我正在侦听/chat路由以向客户端发送websocket握手响应,如下所示: const server = http.createServer((req, res) => { if(req.url === '/chat') { let clientWebSocketKey = req.headers['Sec-WebSocket-Key']; const concaten

我正在使用nodejs编写websocket服务器,使用本文作为我的guid

我正在侦听/chat路由以向客户端发送websocket握手响应,如下所示:

const server = http.createServer((req, res) => {
    if(req.url === '/chat') {
        let clientWebSocketKey = req.headers['Sec-WebSocket-Key'];
        const concatenatedKey = clientWebSocketKey + '258EAFA5-E914-47DA-95CA-C5AB0DC85B11';
        const acceptKey = crypto.createHash('sha1').update(secret).digest('base64');
        res.setHeader('Upgrade','websocket');
        res.setHeader('Connection', 'Upgrade');
        res.setHeader('Sec-WebSocket-Accept', acceptKey);
        res.setHeader('Connetion', 'keep-alive');
        res.statusCode = 101;
        console.log("WEBSOCKET GET REQUEST");
        console.log(res.statusCode); 
    }

    if(req.url === '/') {
        res.write('Main route');
        res.end();
    }
});
此外,我使用带有以下标题的postman启动http GET请求,但我从未得到正确的握手

Host: localhost:3000/chat
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
Sec-WebSocket-Version: 13

我期待着做错事,但我不知道。正如你可能知道的,WebSocket是一个单独的协议,它使用HTTP进行握手。因此,邮递员可能不会解析101状态码


我建议您使用所记录的
升级
事件使用node.js编写请求

如果您使用socket.io库,您可以真正简化that@AndrewHansen我被要求硬编码。我真的很感谢你的澄清。非常感谢你。