Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 使用Socket.io,如何检测何时创建了新的频道/房间?_Node.js_Socket.io - Fatal编程技术网

Node.js 使用Socket.io,如何检测何时创建了新的频道/房间?

Node.js 使用Socket.io,如何检测何时创建了新的频道/房间?,node.js,socket.io,Node.js,Socket.io,从服务器上,我希望能够检测客户机何时创建新的房间或通道。问题是房间和频道是任意的,所以在用户加入/订阅之前,我不知道它们是什么。大概是这样的: 服务器: io.on('created', function (room) { console.log(room); //prints "party-channel-123" }); io.sockets.on('connection', function(socket) { socket.on('createRoom', functi

从服务器上,我希望能够检测客户机何时创建新的房间或通道。问题是房间和频道是任意的,所以在用户加入/订阅之前,我不知道它们是什么。大概是这样的:

服务器:

io.on('created', function (room) {
    console.log(room); //prints "party-channel-123"
});
io.sockets.on('connection', function(socket) {
    socket.on('createRoom', function(roomName) {
        socket.join(roomName);
    });
});
客户:

socket.on('party-channel-123', function (data) {
    console.log(data)
})
我也不能有任何特殊的客户端要求,例如在订阅频道时发送消息:

socket.on('party-channel-123', function (data) {
    socket.emit('subscribed', 'party-channel-123');
})
io.sockets.in(room).emit('event', data);
服务器:

io.on('created', function (room) {
    console.log(room); //prints "party-channel-123"
});
io.sockets.on('connection', function(socket) {
    socket.on('createRoom', function(roomName) {
        socket.join(roomName);
    });
});
客户

var socket = io.connect();
socket.emit('createRoom', 'roomName');
io
对象引用了当前创建的所有房间,可以这样使用:

socket.on('party-channel-123', function (data) {
    socket.emit('subscribed', 'party-channel-123');
})
io.sockets.in(room).emit('event', data);
希望这有帮助


另外,我知道它会发出你可能不想要的“createRoom”,但这就是socket.io的使用方式,这几乎是对文档的复制/粘贴。socket.io网站和其他网站上有很多例子。

发布一个“newRoom”事件并捕捉它?我认为用户无法创建频道;他们只能创建房间,对吗?@JakeSellers,我需要它在不发出任何特殊事件的情况下工作。@跪在ZOD面前,当用户使用socket.on订阅时,他们不一定要创建新频道吗?@jwanga不,根据消息来源,频道处理端点(或路径)。房间大不相同。一个通道可以有多个房间:)。