如何在node js中向所有连接的客户端发送广播

qmelpv7a  于 2023-04-20  发布在  Node.js
关注(0)|答案(2)|浏览(157)

我是一个新手,正在使用MEAN堆栈的应用程序。这是一个基于物联网的应用程序,使用nodejs作为后端。
我有一个场景,我必须向每个连接的客户端发送广播,这些客户端只能打开Socket并等待任何传入的数据。除非像Web浏览器一样,它们无法执行任何事件,直到现在我已经通过了Socket.IOExpress.IO,但找不到任何有助于实现我想要的send raw data to open socket connections的东西。
是否有其他Node模块可以实现此功能?
下面是使用WebSocketServer的代码,

const express = require('express');
    const http = require('http');
    const url = require('url');
    const WebSocket = require('ws');

    const app = express();

    app.use(function (req, res) {
      res.send({ msg: "hello" });
    });

    const server = http.createServer(app);
    const wss = new WebSocket.Server({ server });

   wss.on('connection', function connection(ws) {
     ws.on('message', function(message) {
       wss.broadcast(message);
     }
   }

   wss.broadcast = function broadcast(msg) {
     console.log(msg);
     wss.clients.forEach(function each(client) {
       client.send(msg);
     });
    };

    server.listen(8080, function listening() {
      console.log('Listening on %d', server.address().port);
    });

现在,我的查询是这段代码何时执行

wss.on('connection', function connection(ws) {
    ws.on('message', function(message) {
       wss.broadcast(message);
    }
 }
bnl4lu3b

bnl4lu3b1#

var WebSocketServer = require("ws").Server;

var wss = new WebSocketServer({port:8100});

wss.on('connection', function connection(ws) {
    ws.on('message', function(message) {
       wss.broadcast(message);
    }

}

wss.broadcast = function broadcast(msg) {
   console.log(msg);
   wss.clients.forEach(function each(client) {
       client.send(msg);
    });
};
inn6fuwd

inn6fuwd2#

尝试以下代码从服务器向每个客户端广播消息。

wss.clients.forEach(function(client) {
    client.send(data.toString());
});

演示服务器代码

const WebSocket = require('ws')
const wss = new WebSocket.Server({ port: 2055 },()=>{
    console.log('server started')
})
wss.on('connection', (ws) => {
   ws.on('message', (data) => {
      console.log('data received \n '+ data)
      wss.clients.forEach(function(client) {
         client.send(data.toString());
      });
   })
})
wss.on('listening',()=>{
   console.log('listening on 2055')
})

相关问题