【问题标题】:Using listeners in socket.io在 socket.io 中使用监听器
【发布时间】:2016-08-29 07:06:32
【问题描述】:

我是 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);
    });
});

【问题讨论】:

    标签: node.js sockets socket.io


    【解决方案1】:

    我是否必须删除已被删除的订阅者或听众? 在断开连接时订阅聊天消息事件?。

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

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

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

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

    【讨论】:

    • 感谢您的清晰回答...有道理
    猜你喜欢
    • 2013-11-29
    • 2022-01-17
    • 1970-01-01
    • 2017-11-03
    • 1970-01-01
    • 2023-01-13
    • 2021-02-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多