javascript - 套接字IO : Client side 'connect' event not firing when socket is already setup

标签 javascript sockets socket.io listener

我在浏览器控制台中使用 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() 之后得到一个负载不合理的客户端,以便在设置监听器之前建立连接,我就会遇到麻烦,因为监听器从不触发.

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

谢谢你和最好的问候

最佳答案

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/

相关文章:

c - usbnet 驱动程序和网络子系统

linux - 使用socat连接socket,发送命令,读取单行

javascript - 我的 SocketIO 脚本始终发送相同的数据

javascript - NodeJS 有什么办法可以防止这个错误吗?

c++ - 由于错误代码10093,C++程序无法连接到服务器

node.js - 来自客户端的 socket.io 广播

java - Node.js 和 Jetty 6

javascript - 如何引用 HTML anchor

javascript - Highcharts 数据标签未显示在多个 x 轴和 y 轴上

javascript - jquery 从下拉菜单更改边框样式