2012-11-17 66 views
1

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

回答

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将处理心跳/断开优雅,所以你不必担心演员,只是处理断开连接。我希望这对你有用:)。

+0

谢谢!现在我看得更清楚了! –

相关问题