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