【问题标题】:Trying to emit only to a room in socket.io but it emits to everyone connected to the server试图只向socket.io中的一个房间发射,但它会发射给连接到服务器的每个人
【发布时间】:2016-03-27 20:41:37
【问题描述】:

这是我的连接函数,我在其中将套接字添加到 SOCKET_LIST 全局,以便以后可以对其进行迭代。

Player.onConnect 进行初始化,如果没有开放的房间将创建一个新房间,如果有人在等待对手,则加入一个。

io.sockets.on('connection', function(socket) {


    SOCKET_LIST[socket.id] = socket;

    Player.onConnect(socket);

});

然后这是我尝试将所有数据发送给同一个房间的用户的地方。但不是仅仅将数据发送给房间里的人,而是将数据发送给连接到服务器的每个人。

setInterval(function(){
    var pack = {
        player:Player.update(),
        platform:Platform.update()
    }
   for (var i in SOCKET_LIST) {
        var socket = SOCKET_LIST[i];
        io.sockets.in(socket.room).emit('newPositions', pack);
    }

}, 30);

当我从服务器控制台注销房间 ID 时,它会相应地工作,就像我将从 2 个客户端加入,然后第三个客户端将控制台输出一个新的房间 ID,然后是第 5 个,依此类推。游戏假设为 2 人游戏,如果其他人尝试加入游戏,则会创建一个新房间。

【问题讨论】:

    标签: javascript node.js canvas socket.io


    【解决方案1】:
    for (var i in SOCKET_LIST) 
    

    遍历您的 SOCKET_LIST 并获取所有套接字,这就是服务器向所有人发出的原因。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-01
      • 1970-01-01
      • 2015-03-20
      • 2018-05-07
      相关资源
      最近更新 更多