websoket

demo项目 https://demos.ackuikui.com/im-web/

前端

var ws = new WebSocket('wss://ackuikui.com:3333/');

// 连接成功
ws.onopen = function () {
    // getOldMsg()
}

// 接受消息
ws.onmessage = function (e) {
    // let data = JSON.parse(e.data)
    // // console.log(e.data);
    // appendLine(data)
    // scrollTo()
}

// 发送消息
ws.send(JSON.stringify(data));

后端

可用ws(https://github.com/websockets/ws?tab=readme-ov-file#server-broadcast)
npm i ws

const { WebSocketServer} = WebSocket = require("ws");

wss.on("connection", function connection(ws) {
  // 有空处理 ws.client 增加标识,广播时指定标识群

  ws.on("error", console.error);

  ws.on("message", function message(str) {
    let data = JSON.parse(str)

    // 广播
    wss.clients.forEach(function each(client) {
      if (client.readyState === WebSocket.OPEN) {
        client.send(JSON.stringify(data));
      }
    });
  });
});

或者 nodejs-websocket

// node server
var ws = require('nodejs-websocket');
var server = ws.createServer(function(conn){
  conn.on('text', function(str) {
    broadcast(str)
  }
  conn.on('error', function(){
    // 异常断开连接,如浏览器关闭
  })
})
function broadcast(str){
  // 广播
  server.connections.forEach(function (conn) {
    conn.sendText(str)
  })
}.listen(3002)
// server.listen(port, host)