我能在客户端做些什么来检测socket.io websocket是不可用的吗?有点像:
我试图在客户端添加'error'和'connect_failed'选项,但没有任何运气,那些根本没有触发。任何人的想法我怎么能实现这个目标?
答案 0 :(得分:9)
disconnect
事件就是您想听的内容。
var socket = io.connect();
socket.on('connect', function () {
alert('Socket is connected.');
});
socket.on('disconnect', function () {
alert('Socket is disconnected.');
});
答案 1 :(得分:9)
如果您希望能够检测到客户端无法连接到服务器,请尝试使用connect_error
。这适用于socket.io-1.3.5.js。我在https://stackoverflow.com/a/28893421/2262092找到了这个。
这是我的代码段:
var socket = io.connect('http://<ip>:<port>', {
reconnection: false
});
socket.on('connect_error', function() {
console.log('Failed to connect to server');
});
答案 2 :(得分:0)
在我开发过程中遇到这个bug,并注意到每次重置服务器时我的事件调用都会加倍,因为我的套接字重新连接。结果是对我有用的解决方案,这不是重复连接就是这个
var socket = io.connect();
socket.on(&#39; connect&#39;,function(){
console.log(&#39;用户连接!&#39;);
});
socket.on(&#39; message&#39;,function(message){
的console.log(消息);
});
(由KasperTidemann在https://github.com/socketio/socket.io/issues/430发现)
事实证明,这是因为我发出了“消息”#39; “连接”中的听众功能。把它放在听众之外,解决了这个问题。
欢迎来到Kasper Tidemann,无论你是谁。
继续!!
答案 3 :(得分:0)
connect_error
对我不起作用(使用Apache ProxyPass并返回503)。
如果您需要检测初始连接失败,可以执行此操作。
var socket;
try {
socket = io();
}
catch(e) {
window.location = "nodeServerDown.php";
}
在服务器关闭时将用户重定向到自定义错误页面。
如果您需要在之后处理断开连接,则表示已连接一次。
你这样做:
socket.on('disconnect', function() {
//whatever your disconnect logic is
});