Socket-Io:当套接字已经设置时,客户端"connect"事件不会触发

ben*_*ben 6 javascript sockets listener socket.io

我在浏览器控制台中设置了带有socketio的websocket

socket.socket.connected
Run Code Online (Sandbox Code Playgroud)

返回true.但如果我再添加:

socket.on('connect', function () {console.log('some'); });
Run Code Online (Sandbox Code Playgroud)

没有任何反应,即'some'未被记录.这是来自官方socket-io页面:

var socket = io.connect();
    socket.on('connect', function () { 
    socket.emit('ferret', 'tobi', function (data) {
      console.log(data); 
    });
  });
Run Code Online (Sandbox Code Playgroud)

我想这段代码正在运行.但我现在怀疑它只能起作用,因为当设置监听器(即socket.on...)套接字没有连接时,只是因为设置连接的延迟,监听器在建立连接时是活动的.如果这是正确的,那么这意味着如果我在调用io.connect()之后得到一个具有不合理高负载的客户端,以便在设置监听器之前建立连接我遇到了麻烦,因为监听器永远不会触发.

  • 它是否正确?
  • 如何设置在两种情况下触发的侦听器:
    1. 设置侦听器时尚未建立连接
    2. 设置侦听器时已建立连接

感谢你并致以真诚的问候

ben*_*ben 0

callBackOnConnect: function(socket, callback) {
    if (socket.socket.connected) {
        callback();
    } else {
        socket.on('connect', function() {
            callback();
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

据我所知,这是安全的 - 尽管不太确定。