( Socket.io ) 一个socket连接多个房间

Posted

技术标签:

【中文标题】( Socket.io ) 一个socket连接多个房间【英文标题】:( Socket.io ) One socket connection multiple rooms 【发布时间】:2016-12-14 05:28:53 【问题描述】:

我在使用 socket.io 时遇到问题。 我尝试创建一个连接到多个房间的单套接字连接。

这是我当前的代码:

function JoinRoom(id)
   socket = io(domain);

   socket.on('connect', function (data) 
        console.log('Connected to ' + room);
        socket.emit('room', room);
   );

   socket.on('message', function (data) 
        console.log(data);
   );

问题是如果我删除了 var socket.io(domain) 函数没有连接,也没有从房间接收数据。

例子:

socket = io(domain);
function JoinRoom(id)

   socket.on('connect', function (data) 
        console.log('Connected to ' + room);
        socket.emit('room', room);
   );

   socket.on('message', function (data) 
        console.log(data);
   );

如果我使用 JoinRoom() 函数的 socket.io() 函数,我不会收到消息消息或任何东西。这是行不通的。 我究竟做错了什么?有什么解决办法吗?

【问题讨论】:

【参考方案1】:

在客户端上,创建一个事件来指示访问房间。

在服务器上,应用访问逻辑。

客户

var socket = io('http://localhost');

function JoinRoom(data)
    socket.emit("join", data);


var data = 
    room:'ejemplo'
;

JoinRoom(data);

服务器

var io = require('socket.io')(app);

io.on('connection', function(socket)
    socket.on('join', function(data)
        console.log(data); // data =  room: String, ...
        socket.join(data.room);  
    );

socket.on('leave', function(data)
    socket.leave(data.room); 
);

【讨论】:

以上是关于( Socket.io ) 一个socket连接多个房间的主要内容,如果未能解决你的问题,请参考以下文章

与 socket.io 相关的可扩展性问题

处理浏览器重新加载 socket.io

( Socket.io ) 一个socket连接多个房间

无法在docker中连接多个python socket.io

socket.io分布式

android studio连接io.socket:sokect.io-client服务器的条件