socket.io,我如何知道套接字是否仍然有效?

时间:2012-11-17 19:59:02

标签: node.js socket.io

我在节点上创造了我的第一步,并编写了一个简单的聊天应用程序。每当nodejs获得一个新的套接字连接时,它就会保存在一个简单的数组中...我的问题是当一个连接被关闭时,因为他的引用仍然存在... 如何在发出任何连接之前检查连接是否处于活动状态事件给她,避免崩溃?

1 个答案:

答案 0 :(得分:4)

我将使用socket.io网站上的一个例子。

var io = require('socket.io').listen(80);

io.sockets.on('connection', function (socket) {
  var tweets = setInterval(function () {
    getBieberTweet(function (tweet) {
      socket.volatile.emit('bieber tweet', tweet);
    });
  }, 100);

  socket.on('disconnect', function () {
    clearInterval(tweets);
  });
});

在连接时,它传递一个套接字变量。这对每个客户端都是唯一的,这就是socket.emit仅向一个客户端发送的原因,或者为什么广播将发送给除发件人之外的所有人。

socket.on('disconnect', function () {
  clearInterval(tweets);
});

注意它是如何清除间隔的?同样,这是特定于客户端的,因为它发生在特定的“套接字”中,因此您可以执行以下操作:

socket.on('disconnect', function () {
  socket.broadcast.emit('disconnected', {user: "film42", status: "disconnected from server"});
});

Socket.IO将优雅地处理心跳/断开连接,因此您无需担心额外内容,只需处理断开连接即可。我希望这对你有用:)。