簡體   English   中英

嘗試僅向socket.io中的房間發出信號,但向與服務器連接的每個人發出信號

[英]Trying to emit only to a room in socket.io but it emits to everyone connected to the server

這是我的連接函數,在其中將套接字添加到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人游戲,如果其他人嘗試加入游戲,則會創建一個新房間。

for (var i in SOCKET_LIST) 

循環遍歷您的SOCKET_LIST並獲取所有套接字,這就是服務器向所有人發出信號的原因。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM