在socket.io中使用侦听器

时间:2016-05-04 02:59:05

标签: node.js sockets socket.io

我有新的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);
    });
});

1 个答案:

答案 0 :(得分:1)

  

我是否必须删除已经订阅的订阅者或听众   在断开连接时使用聊天消息事件进行子标记?

没有。您不需要对disconnect进行任何处理,除非您有自己的数据结构需要更新。

当断开连接时,将自动从所有socket.io数据结构中删除用户。你不必自己做。

  

如果我不删除听众,这是否是泄漏?

不,Javascript是垃圾收集的,所以当套接字断开连接并且socket.io将其从其所有数据结构中删除时,只要您没有任何自己的数据结构,套接字对象就会被垃圾收集保持对套接字对象的引用。