我在服务器上有5个房间,说“ A”,“ B”,“ C”,“ D”,“ E”
服务器端 即
io.on('connection', (socket) => {
console.log('New user connected');
socket.on('disconnect', () => {
console.log('User was disconnected');
});
});
//创建房间的功能
function connectSocket(data) {
io.emit(data.device_id, data);
console.log('room',data.device_id, 'created');
}
//创建房间电话
connectSocket("A");
客户端
var socket = io(*url*);
socket.on('connect', function () {
console.log('Connected to server');
});
socket.on(*roomname*, function (message) {
console.log(message);
});
` 问题
我想将房间A切换到B
但是在我切换之前,我想关闭所有连接
我不想在加入新房间时监听旧房间的数据
答案 0 :(得分:1)
我认为您将活动与房间混在一起。 io.emit(data.device_id, data);
不会创建会议室,它只是将数据发送到每个连接的客户端,第一个参数是事件的名称,第二个参数是数据。 Documentation。
在Socket.IO中使用房间的正确方法如下:
加入一个房间
socket.join(roomId); // roomId is a string
离开房间:
socket.leave(roomId);
发送给“游戏”室中的所有客户端,发件人除外:
socket.to('game').emit('nice game', "let's play a game");
发送给“游戏”室中的所有客户,包括发件人:
io.in('game').emit('big-announcement', 'the game will start soon');
有关更多信息,请查看Socket.IO cheatsheet和有关rooms and namespaces的文档。
希望对您有帮助!