我正在使用 ws 库设置一些 websocket。我正在努力使用握手设置授权。我已经向我们的服务器添加了一条路由来升级到 websocket 连接,如下所示:
.get(
'/chat',
authorisationFunction,
upgradeConnection,
),
websocket服务器:
const WebSocket = require('ws');
const wss = new WebSocket.Server({ port: 3030 });
这是 upgradeConnection 函数,如果授权成功,它将运行:
const upgradeConnection = (request, socket, head) => {
return wss.handleUpgrade(request, request.socket, head, function done(ws) {
return wss.emit('connection', ws, request);
});
}
我还有一个收听消息的功能:
function webSocketsServer() {
wss.on('connection', (ws, request, client) => {
ws.on('message', message => {
ws.send(message);
});
});
}
发出一个连接,并从我的服务器得到以下响应:
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: QyVvqadEcI1+ALka6j2pLKBkfNQ=
但随后在我的客户端上立即出现错误“与 'ws://localhost:3000/chat' 的 WebSocket 连接失败:帧头无效”。
但是当我绕过握手并直接连接到我的 websocket 服务器时,我可以成功发送消息。该错误仅在客户端上,不在后端。我错过了什么?
小唯快跑啊
相关分类