node.js - 为什么我的 Socket.io Express 应用程序只是发送到 'sender' s' 客户端?

标签 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('');
        }
    });
});

感谢帮助。

最佳答案

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

关于node.js - 为什么我的 Socket.io Express 应用程序只是发送到 'sender' s' 客户端?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9334360/

相关文章:

javascript - 英雄库 : how to get the envPort on other js files

node.js - 将 dgram (UDP) 与 Socket.IO 一起使用时,数据报的发送速度是多少? ( Node )

java - 什么会导致 “IO error java.net.SocketException: select failed ” ?

node.js - 如何在HTML5中通过客户端扬声器播放实时二进制流

javascript - if 语句阻止套接字向客户端发送消息

node.js - 导入 Cognito 时遇到问题, "AmazonCognitoIdentity is not defined"

web-services - 如何创建简单的 okhttp3 websocket 连接?

nginx - 如何在 IBM Bluemix 上的 Kubernetes 中向入口资源添加 websocket 支持?

javascript - 在将 header 发送到 ServerResponse.setHeader 中的客户端 [dev.start] 后无法设置 header

node.js - 如何使用 AWS S3 签名 url 从 Postman 上传文件?