方法中的JavaScript

时间:2013-12-15 22:25:07

标签: javascript socket.io

NodeBB论坛https://github.com/designcreateplay/NodeBB在io.sockets对象上使用in方法,该方法似乎与此处的in方法https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/in不同但是我没有在socket.io文档中看到in方法。

下面的代码中in方法做了什么?

下面的ThreadTools.lock方法调用方法websockets.in,正如您在此处看到的那样returns io.sockets.in(room)。我是

websockets.in = function(room) {
        return io.sockets.in(room);
    };

ThreadTools.lock

ThreadTools.lock = function(tid, socket) {
    topics.setTopicField(tid, 'locked', 1);

    if (socket) {
        websockets.in('topic_' + tid).emit('event:topic_locked', {
            tid: tid,
            status: 'ok'
        });

        if (socket) {
            socket.emit('api:topic.lock', {
                status: 'ok',
                tid: tid
            });
        }
    }
}

2 个答案:

答案 0 :(得分:2)

嘿@BrainLikeADullPencil!

我们使用.in()向特定“房间”中的用户发送消息。对于ThreadTools.lock,它会向该主题的房间中的所有用户发送event:topic.locked消息(用户在浏览主题时会自动加入主题室)。

在客户端,我们侦听该消息并将主题锁定在DOM中(加上其他各种小变化)

答案 1 :(得分:1)

wiki

  

有两种方式可以发送到房间:使用socket.broadcast.to('room')io.sockets.in('room')