nodejs 实现即时通讯


1. 创建一个空文件夹, 安装包 
npm init -y
npm i nodejs-websocket --save

2. 服务端代码, 在当前目录创建 app.js 文件

var ws = require("nodejs-websocket");
console.log("开始建立连接...");

const socketPool = [];

const socket = ws.createServer(function (conn) {
  conn.on("text", function (str) {
    console.log(str);
    const params = JSON.parse(str);
    console.log(params);
    const { type, from, to, message } = params;
    // 创建连接通知
    if (type === 1) {
      const s = {
        name: from,
        conn,
      };
      socketPool.push(s);
      console.log(socketPool);
    } else if (type === 2) {
      const index = socketPool.findIndex((i) => i.name === to);
      if (index >= 0) {
        socketPool[index].conn.sendText(
          JSON.stringify({
            from: to,
            to: from,
            message,
          })
        );
      }
    }
  });
  conn.on("close", function (code, reason) {
    console.log("关闭连接", reason);
  });
  conn.on("error", function (code, reason) {
    console.log("异常关闭");
  });
});

socket.listen(8001, () => {
  console.log("WebSocket建立完毕");
});

3. 用户端1, 在任意位置创建 html1



  
    
    
    
    user-张三
    
  
  
    
发送

4. 任意位置创建 HTML2



  
    
    
    
    user-李四
    
  
  
    
发送

5. 启动流程

在app.js目录, cmd 运行 node  app.js  提示  

WebSocket建立完毕 说明长连接创建完成   已不同的浏览器分别打开 html1 和 html2 就能愉快的发送消息了