【问题标题】:node.js only one client is receiving the messagesnode.js 只有一个客户端正在接收消息
【发布时间】:2013-01-28 17:52:48
【问题描述】:

据我所知,除非另有说明,否则如果服务器发送消息,所有客户端都应该收到它。但在我的情况下,只有一个客户收到消息。

客户:

(function () {
  window.Network = {
    socket : null,  
    initialize : function(socketURL) {
      this.socket = io.connect(socketURL);
      this.socket.on('new move', this.add);     
    },  
   add : function(data) {   
      var msg = $('<div class="msg"></div>')       
      .append('<span class="text">' + data.x+'/'+data.y + '</span>');

      $('#messages')
        .append(msg)
        .animate({scrollTop: $('#messages').prop('scrollHeight')}, 0);
    },   
   send : function(data) {
      this.socket.emit("move",data);
      return false;
    }
  };
}());

服务器:

io.sockets.on('connection', function (socket) {
    socket.on('move', function (data) {
    console.log(data);
    socket.emit("new move",data);
  }); 
});

如果我打开多个客户端并使用“发送”功能,则只有发送它的客户端会收到来自服务器的发射。 知道我做错了什么吗? 谢谢

【问题讨论】:

    标签: node.js websocket


    【解决方案1】:

    当您使用套接字时,您是直接与连接的客户端对话。

    但是你可以使用房间,在这个 sn-p 中我将套接字添加到房间 1

    // Add the player socket, to the room.
    socket.join('room1');
    

    然后您可以通过

    向房间中的所有客户端发出
    io.sockets.in('room1').emit('startGame', true);
    

    【讨论】:

    • 这个也是。我暂时保持简单,但以后可能会创建房间。感谢您的信息。
    • +1000 我找了 3 天。为什么 btford/angular-socket-io 或 socket.io 的文档中没有明确说明?
    【解决方案2】:

    代码按预期工作。您正在执行socket.emit("new move",data);,它将向特定的socket 发出new move 事件,在您的情况下,它与连接的套接字相同。

    如果您还希望将其发送到已连接的其他客户端,则需要将事件显式发送给其他客户端。

    socket.emit("new move",data);
    socket.broadcast.emit("new move",data);
    

    【讨论】:

    【解决方案3】:

    要在服务器端全局发射,请使用:

    io.sockets.emit('new move', 'data1');
    

    发射到当前套接字:

    socket.emit('function', 'data1', 'data2');
    

    向除客户以外的所有人广播:

    socket.broadcast.emit('function', 'data1', 'data2');
    

    Source

    【讨论】:

    • 我刚读了一篇文章,说的和你一样stackoverflow.com/questions/9837998/… 测试了它,将我的代码更改为 io.sockets.emit("new user",data);但是,仍然只有发送者从服务器接收到发射
    猜你喜欢
    • 2021-12-12
    • 1970-01-01
    • 2017-02-13
    • 2017-12-22
    • 2020-02-01
    • 2021-05-23
    • 2015-03-22
    • 2010-12-03
    • 2018-08-06
    相关资源
    最近更新 更多