在路由器中使用`io.sockets.emit`。如果套接字建立之前没有完成怎么办?

时间:2018-02-10 13:36:02

标签: node.js sockets express asynchronous socket.io

我在路由器中使用io.sockets.emit,如

  db.SomeModel.find({},
    function(err, modelDate) { 
      io.sockets.emit('eventName', modelData);
    }
  );

如果一个套接字花了10秒(只是一个例子)来建立会发生什么,在它建立之前我会尝试发出一些东西。它会给出一些undefined错误或..?我一般都是节点和异步编程的新手。非常感谢。

1 个答案:

答案 0 :(得分:2)

  

如果套接字建立没有在它之前完成怎么办?

只会跳过它,并且不会将数据发送到尚未建立​​连接的套接字。

io.sockets.emit()遍历连接套接字列表并分别发送给每个套接字。如果socket没有连接完成,那么它将不在socket.io迭代的列表中,因此不会向它发送任何数据。