我在浏览器控制台中使用 socketio 设置了一个 websocket
socket.socket.connected
返回真值。但是如果我再添加:
socket.on('connect', function () {console.log('some'); });
没有任何反应,即“some”没有被记录。这是来自官方的 socket-io 页面:
var socket = io.connect();
socket.on('connect', function () {
socket.emit('ferret', 'tobi', function (data) {
console.log(data);
});
});
我想这段代码可以正常工作。但我现在怀疑它只起作用,因为当设置监听器时(即 socket.on ...
)套接字没有连接,只是因为设置连接的延迟监听器建立连接时处于事件状态。如果那是正确的,那么这意味着如果我在调用 io.connect() 之后得到一个负载不合理的客户端,以便在设置监听器之前建立连接,我就会遇到麻烦,因为监听器从不触发.
- 这是正确的吗?
- 如何设置在两种情况下都触发的监听器:
- 设置监听器时尚未建立连接
- 设置监听器时连接已经建立
谢谢你和最好的问候
最佳答案
callBackOnConnect: function(socket, callback) {
if (socket.socket.connected) {
callback();
} else {
socket.on('connect', function() {
callback();
});
}
}
据我所知,这是安全的 - 虽然不确定。
关于javascript - 套接字IO : Client side 'connect' event not firing when socket is already setup,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23413904/