Socket.io 错误处理

Posted

技术标签:

【中文标题】Socket.io 错误处理【英文标题】:Socket.io error handling 【发布时间】:2012-11-15 03:52:19 【问题描述】:

我遇到了 Socket.IO 的问题。

我正在尝试在套接字错误后重新连接套接字,但它不会重新连接。代码如下:

socket = io.connect(host, options);
socket.on('connect', this.onConnect);
socket.on('error', function() 
    //here i change options
    socket = io.connect(host, options);
);

为什么它不创建新连接? (主机和端口保持不变,它适用于第一个连接)。

【问题讨论】:

1) 什么是error 事件? 2)你怎么知道它没有创建新的连接? 3) 显然,当您创建新连接时,您必须再次设置所有事件处理程序,您这样做了吗? 1) "error" 是默认的 socket.io 事件 (github.com/LearnBoost/socket.io/wiki/Authorizing) 2) 没有记录新连接 3) 是的,我这样做了 记录了?在服务器端?还是客户端? 服务器端和客户端 您必须向我们展示更多客户端和服务器的代码。 【参考方案1】:

尝试将选项 'force new connection': true 添加到io.connect。听起来好像没有重试连接。

除非您指定此选项,否则套接字 IO 不会重新连接到它已经尝试过的主机。

这是一个带有内嵌选项哈希的 sn-p:

io.connect(host, 
  'force new connection': true
);

您可以在此处了解有关选项的更多信息:https://github.com/LearnBoost/Socket.IO/wiki/Configuring-Socket.IO

【讨论】:

以上是关于Socket.io 错误处理的主要内容,如果未能解决你的问题,请参考以下文章

Socket.io mysql连接错误

节点聊天给了 throw er; //未处理的错误事件

WebSocket 握手期间的 Socket.io 错误:意外的响应代码:500 windows server iis

Nodejs 得到 throw er; // 未处理的“错误”事件 [重复]

业力:移动文件夹->套接字上缺少错误处理程序?

socket.io,io 未定义(JS 错误)