为什么我的Socket.io Express应用程序只是发送给'发件人'客户端?

时间:2012-02-17 19:42:13

标签: node.js websocket socket.io

我正在尝试使用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('');
        }
    });
});

非常感谢帮助。

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

服务器端,我想你想要:

socket.broadcast.emit(data);

而不是:

socket.send(data);

参见&#34;广播消息&#34;在"How to use" page的底部。 :)