套接字.IO授权失败不会重试重新连接
Socket.io failing authorization does not retry to reconnect
我使用socket io和一个简单的令牌验证方法(服务器端):
io.use(function(socket, next){
var handshake = socket.request;
if(token == handshake._query.token)
{
console.log('Client authorized');
next();
}
else
{
console.log('Client not authorized');
next(new Error('not_authorized'));
socket.disconnect();
}
});
问题是,如果客户端第一次授权失败(错误的令牌),它不会再尝试连接,即使我发送一个手动的新连接,它也不会重新连接,直到整个页面刷新。Cliend:
var socket = io.connect(this.adress, {query: 'token=123456789', transports:['websocket', 'polling'] });
socket.on('error', function(err){
console.log(err);
if(err == 'not_authorized')
{
console.log('gettin toke');//NOT ENTERING HERE
}
PS.connected = false;
});
如何重新连接其他参数?
解决方法,再次设置这些变量以重试连接:
PS.socket.socket.connecting = false;
PS.socket.socket.options.query = 'token='+tok;
根据文档示例,您不应该使用socket.disconnect();
。由于这一行,您的客户端error
事件没有触发。
重新连接时,您也可以尝试在连接选项中将forceNew
设置为true
:
var socket = io.connect(this.adress, {
query: 'token=123456789',
transports:['websocket', 'polling'],
forceNew: true
});
相关文章:
- JavaScript:在源404上重试
- 当客户端在JW Player中恢复丢失的连接时,会自动重新连接
- 用分隔符分隔具有多个整数值的字符串的Javascript"重试错误的值
- Ajax在NodeJS中为一个耗时的请求请求多次重试
- PeerJS自动重新连接
- Node.js REST与MySQL句柄重新连接
- 如何仅在RxJs中可观察到的源发出的特定错误上重试
- Socket.IO socket.id 更改同一客户端而不重新连接
- 设置流星重新连接时间
- 如何通过重新连接实现共享重播
- BreezeJS中央错误处理程序和自动重试
- 重新连接具有共享RxJS observable的WebSocket
- 如何捕获请求中的错误,然后打开模态,然后在模态使用RxJS关闭时重试
- Angular2 http重试逻辑
- 重新连接 JavaScript 函数
- 如何在自动重新连接超时后重新连接socket.io客户端
- Socket.IO:重新连接导致服务器连接代码运行两次
- 套接字.IO授权失败不会重试重新连接
- 在setErrorInterceptor中重新定义重试查询
- 使用JavaScript重试sql连接