【发布时间】:2019-08-07 15:26:24
【问题描述】:
我正在使用本文作为我的 guid 使用 nodejs 编写 websocket 服务器
我正在监听 /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();
}
});
我也在使用邮递员发起 http GET 请求,但我从来没有得到正确的握手。
Host: localhost:3000/chat
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
Sec-WebSocket-Version: 13
我预计会做错事,但我想不通。
【问题讨论】:
-
如果你使用 socket.io 库,你真的可以简化它
-
@AndrewHansen 我需要对其进行硬编码。
标签: node.js http websocket server