我有新的socket.io并且有一个简单的聊天应用程序。
这是一个多用户应用程序,可以向所有连接的用户发送聊天消息。
以下是我的服务器端代码。 聊天消息是被触发和订阅的事件,用于广播消息
现在我的问题是,代码是否正确?特别是断开部分。 我是否必须删除已断开连接的聊天消息事件的订阅者或监听者?如果我不删除听众,这是泄漏吗?
var server = app.listen(3006);
console.log('listening on port 3006');
//socket io event listening
var io = require('socket.io').listen(server);
io.on('connection', function(socket) {
console.log('a user connected');
socket.on('disconnect', function() {
console.log('user disconnected');
});
socket.on('chat message', function(msg) {
console.log(msg);
io.emit('chat message', msg);
});
});
答案 0 :(得分:1)
我是否必须删除已经订阅的订阅者或听众 在断开连接时使用聊天消息事件进行子标记?
没有。您不需要对disconnect
进行任何处理,除非您有自己的数据结构需要更新。
当断开连接时,将自动从所有socket.io数据结构中删除用户。你不必自己做。
如果我不删除听众,这是否是泄漏?
不,Javascript是垃圾收集的,所以当套接字断开连接并且socket.io将其从其所有数据结构中删除时,只要您没有任何自己的数据结构,套接字对象就会被垃圾收集保持对套接字对象的引用。