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

Dar*_*oni 4 javascript sockets websocket node.js

我是一个使用 MEAN 堆栈的应用程序的新手。它是一个基于物联网的应用程序,使用 nodejs 作为后端。

我有一个场景,我必须向每个连接的客户端发送广播,这些客户端只能打开 Socket 并可以等待任何传入的数据。除非像网络浏览器一样,否则他们无法执行任何事件,直到现在我已经经历过Socket.IOExpress.IO但找不到任何有助于实现我想要send raw data to open socket connections的东西'

是否有任何其他节点模块来实现这一点。?

这是使用 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);
    });
Run Code Online (Sandbox Code Playgroud)

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

wss.on('connection', function connection(ws) {
    ws.on('message', function(message) {
       wss.broadcast(message);
    }
 }
Run Code Online (Sandbox Code Playgroud)

raj*_*eer 9

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);
    });
};
Run Code Online (Sandbox Code Playgroud)

  • 根据您的新代码和查询,该部分代码表示,当 websocket 连接打开并收到任何消息时,它将该消息传递给广播函数,然后广播函数向所有连接的客户端发送/广播 (2认同)