将事件连接到 socket.io

Connecting events to socket.io

我一辈子都解决不了这个问题...我需要第二双眼睛来帮忙,拜托!我试图在将值赋给 "winner" 的函数中捕获 "winner" 值。然后我想将这些数据广播给我所有的客户。

这是我存储库的 link(要查找代码:关注(服务器)index.js 第 29 行 和(客户端)public/js/general/darkroom/play.js 第 38 行 第 100 行 ) : https://github.com/omaracrystal/Capstone.Project.io

这些是我正在采取的步骤:

1) public/js/general/darkroom/play.js >第 38 行

``socket.emit('winner known', winner);``

2) public/js/general/darkroom/play.js >第 100 行

``socket.on('winner known', function (data) {
      console.log(data);
  })``

3) index.js>第 29 行

``socket.on('winner known', function (data) {
      socket.broadcast.emit(data);
  }; ``

我做错了什么???

您在index.js中使用了

    io.on('connection', function (client) { //line 26
      var addedUser = false;

      socket.on('winner known', function (data) { //socket is undefined
        socket.broadcast.emit(data);
      };
});

改为使用

    io.on('connection', function (socket) {  //'socket' is the instance of connected client's socket
      var addedUser = false;

      socket.on('winner known', function (data) {
        socket.broadcast.emit(data);
      };
});

当你启动你的节点服务器时,你有没有遇到任何错误:有些东西是未定义的?如果你能启动它而没有任何错误发生,那完全是胡说八道。

当您从套接字发出时,您需要命名您的事件类型。所以:

io.on('connection', function (socket) {  
      var addedUser = false;

      socket.on('winner known', function (data) {
        socket.broadcast.emit(data);
      };
});

应该是

io.on('connection', function (socket) {  
      var addedUser = false;

      socket.on('winner known', function (data) {
        socket.broadcast.emit('winner known', data);
      };
});

这样您的客户端代码就知道要查找什么。