【发布时间】:2020-08-26 16:00:03
【问题描述】:
有什么方法可以防止ws连接打开吗?
目前我正在使用这个解决方案:
wss.on('connection', (ws, request) => {
console.log('connection opened')
ws.on('close', () => console.log('connection closed'})
});
server.on('upgrade', async (request, socket, head) => {
if (websocketVerificationFailed()) {
socket.write('HTTP/1.1 401 Unauthorized\r\n\r\n');
socket.destroy();
return;
}
wss.handleUpgrade(request, socket, head, ws => wss.emit('connection', ws, request));
});
问题是连接打开了很短的时间,然后就关闭了。这不是我想要的,因为客户端不应该在未经验证的情况下触发 onopen。
我需要在客户端设置一些超时并等待连接状态正确还是在服务器上有其他方法可以修复它?
如您所见,我正在使用 ws 库。
【问题讨论】:
-
在我看来,您应该只允许用户访问,例如当他登录时。或者在一些受保护的路线上。所以暂时没有打开连接。仅在获得授权的情况下。
-
谢谢,我应该朝那个方向走 :)