【问题标题】:Why is my Socket.io Express app just sending to the 'sender's' client?为什么我的 Socket.io Express 应用程序只是发送到“发件人”客户端?
【发布时间】:2012-03-09 05:07:24
【问题描述】:

我正在尝试使用 Node.js (Express) 和 Socket.io 编写一个基本的聊天应用程序。一切“似乎”都在工作,但我的套接字服务器似乎只是将消息“发送”回原始发件人。这是我的套接字代码:

var client = io.listen(app);

client.sockets.on('connection', function (socket) {
  socket.on('message', function (data) {
    console.log(data);
    socket.send(data);
  });
});

这是我的客户端代码:

$(document).ready(function() {
    var socket = new io.connect('http://localhost:3000');

    socket.on('connect', function() {
        socket.send('A client connected.');
    });

    socket.on('message', function(message) {
        $('#messages').html('<p>' + message + '</p>' +  $('#messages').html());
        console.log(socket);

    });

    $('input').keydown(function(event) {
        if(event.keyCode === 13) {   
            socket.send($('input').val());
            $('input').val('');
        }
    });
});

感谢您的帮助。

【问题讨论】:

    标签: node.js websocket socket.io


    【解决方案1】:

    服务器端,我想你想要:

    socket.broadcast.emit(data);
    

    代替:

    socket.send(data);
    

    请参阅"How to use" page 底部的“广播消息”。 :)

    【讨论】:

      【解决方案2】:

      使用client.sockets.emit 代替socket.emit。它将发送到每个连接的客户端(广播),使用套接字对象只发送到特定的客户端。

      【讨论】:

      • 由于某种原因,当我使用 client.sockets.send(data) 时,它按预期工作,感谢您的帮助!但是 client.sockets.emit(data) 没有广播任何东西..
      猜你喜欢
      • 2016-10-19
      • 1970-01-01
      • 2018-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-24
      • 2021-06-21
      • 2020-07-21
      相关资源
      最近更新 更多