2017-07-25 84 views
0

我试图发送一个消息到连接到我的服务器使用socket.io的所有插座。到目前为止,代码如下:发射到所有插座不工作Socket.io

if(electionExists) { 
     var connectedClients = io.sockets.adapter.rooms[electionRequested].sockets; 
     for(client in connectedClients) { 
      socket.to(client).emit("isVoteValid", {voteToValidate: voteToValidate}); 
     } 
    } 

我确信,它进入,如果(electionExists)条件。另外,我打印出来,连客户的阵列,它看起来像这样:

{ SdiVoIUuGfFL5AJXAAAA: true, 'wLh-EfkAIrWpjx6nAAAC': true } 

和公正的缘故吧,我打印每个客户的循环,从而导致此:

SdiVoIUuGfFL5AJXAAAA 
wLh-EfkAIrWpjx6nAAAC 

因此,我导致相信问题不在于获取正确的套接字ID。但是,发射事件不起作用。在客户端我有这个:

socket.on("isVoteValid", function(obj) { 
    console.log("it enters isVoteValid"); 
    }); 

这真的很简单,但console.log永远不会发生。我真的不明白为什么它不起作用。任何人有想法?

+0

尝试'socket.broadcast.emit'发送给所有客户端,而无需使用For循环 – frozen

+0

没有工作:(没有出现在console.log –

+0

因为你只是试图发射到一个房间的所有插座,为什么你不只是播放房间? – jfriend00

回答

0

如果你想你的广播消息,然后使用下面的代码

if(electionExists) { 
     socket.broadcast.emit("isVoteValid", {voteToValidate: voteToValidate}); 
} 

,或者您也可以使用此

if(electionExists) { 
     io.sockets.emit("isVoteValid", {voteToValidate: voteToValidate}); 
} 
+0

@frozen还建议,但它没有工作:( –

+0

好吧,尝试第二个 –

+0

第二个工作,谢谢:) –