如何向每个套接字连接(从服务器)发送消息

时间:2018-12-02 18:08:43

标签: node.js sockets

我正试图创建一个简单的聊天应用程序来应对挑战,并进一步学习JavaScript。 为此,我使用内置软件包net来创建套接字服务器和客户端。

为简单起见,我有一个客户端,当它连接到服务器时,它会发送一个Stringify对象,并且希望我的服务器向当前连接的每个客户端发送一条消息。

这是我的消息的结构:

socket.write(JSON.stringify({
       type: message type,
       data: message data,
       author: message author
}))

对不起,我的英语不好,谢谢所有阅读此书的人。

1 个答案:

答案 0 :(得分:0)

您可以这样做。摘自ws github页面https://github.com/websockets/ws 有很多方法可以实现这一目标,但是在Node中,这可能是最好的解决方案。

const WebSocket = require('ws');

const wss = new WebSocket.Server({ port: 8080 });

// Broadcast to all.
wss.broadcast = function broadcast(data) {
wss.clients.forEach(function each(client) {
 if (client.readyState === WebSocket.OPEN) {
     client.send(data);
    }
  });
 };

 wss.on('connection', function connection(ws) {
 ws.on('message', function incoming(data) {
 // Broadcast to everyone else.
 wss.clients.forEach(function each(client) {
  if (client !== ws && client.readyState === WebSocket.OPEN) {
    client.send(data);
        }
      });
    });
 });