webscoket的基本使用

196 阅读2分钟

node启动webScoket服务

const webScoket = require("ws");
const wss = new webScoket.Server({ port: 3000 });

wss.on("connection", (ws) => {
  console.log("连接进来了");

  ws.on("close", () => {
    console.log("连接结束");
  });
  ws.on("message", (e) => {
    // 在这里可以访问WebSocket对象的唯一标识符
    const uniqueIdentifier = ws._socket.remoteAddress + ":" + ws._socket.remotePort;
    ws.send("接收到WebSocket对象为" + uniqueIdentifier + ",服务器回复:" + e.toString("utf8"));
  });
});

html连接webscoket

<script>
      const ws = new WebSocket("ws://localhost:3000");

      ws.addEventListener("open", () => {
        console.log("网页连接上ws服务器了");
      });

      ws.addEventListener("message", ({ data }) => {
        console.log("收到的消息:", data);
      });
      // 在控制台调用sendWsMessage发送消息即可测试
      window.sendWsMessage = (e) => {
        ws.send(e);
      };
    </script>

一些关于webscoket的GPT问答

1.为什么一个node起了一个webscoket服务,可以让多个用户端连接,并且区分

在Node.js中创建WebSocket服务可以让多个用户端连接,并且区分它们的连接。这可以通过WebSocket协议本身的特性以及在Node.js中使用的WebSocket库来实现。

下面是一般的实现方式:

  1. WebSocket协议的特性

    • WebSocket协议是一种全双工通信协议,允许服务器和客户端之间进行实时的双向通信。
    • 每个客户端连接到WebSocket服务器时,服务器会为每个连接创建一个唯一的WebSocket对象,用于处理该客户端的通信。
  2. Node.js中的WebSocket库

    • 在Node.js中,您可以使用诸如wssocket.io等WebSocket库来创建WebSocket服务器。
    • 这些库提供了方便的API,使您可以轻松地处理WebSocket连接、消息传输和事件处理。
  3. 区分多个用户端连接的方法

    • 每当有新的客户端连接到WebSocket服务器时,服务器会创建一个新的WebSocket对象来表示该连接。
    • 您可以通过WebSocket对象的唯一标识符(如ID)或其他属性来区分不同的客户端连接。
    • 您可以维护一个客户端连接的列表或映射,将每个客户端连接的唯一标识符与相应的WebSocket对象关联起来。
    • 通过这种方式,您可以在服务器端区分不同的客户端连接,并针对每个客户端执行特定的操作或发送特定的消息。

总的来说,通过WebSocket协议的特性和Node.js中提供的WebSocket库,您可以轻松地创建一个WebSocket服务器,让多个用户端连接并且区分它们,以实现实时的双向通信。

webscoket库

socket.io/zh-CN/docs/…