1

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

4

1 回答 1

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 将优雅地处理心跳/断开连接,因此您无需担心额外内容,只需处理断开连接即可。我希望这对你有用:)。

于 2012-11-17T21:03:43.310 回答