📜  在 ws 节点 js 中创建房间 - Javascript (1)

📅  最后修改于: 2023-12-03 15:23:21.630000             🧑  作者: Mango

在 WS 节点 JS 中创建房间

在 WebSockets (WS) 中,创建房间是一项非常常见的任务。在本文中,我们将介绍如何在 WS 节点 JS 中创建房间。

步骤
  1. 首先,我们需要实例化一个 WebSocket 服务器。这可以通过以下代码完成:
const WebSocket = require('ws');

const wss = new WebSocket.Server({ port: 8080 });
  1. 然后,我们需要为新的连接创建房间。这可以通过以下代码完成:
const rooms = {};

wss.on('connection', (ws) => {
  ws.room = 'default-room';

  if (!rooms[ws.room]) {
    rooms[ws.room] = [];
  }

  rooms[ws.room].push(ws);
});

在上面的代码中,我们创建了一个名为 rooms 的空对象,并将其传递给了 WebSocket 服务器的 connection 事件。在客户端连接到服务器时,我们将创建一个名为 default-room 的房间,并将新的连接添加到该房间的数组中。

  1. 现在,我们已经成功创建了一个房间,并添加了新的连接到房间中。但是,我们还需要确保在客户端发送消息时,消息只发送给该房间的连接。这可以通过以下代码完成:
wss.on('connection', (ws) => {
  ws.room = 'default-room';

  if (!rooms[ws.room]) {
    rooms[ws.room] = [];
  }

  rooms[ws.room].push(ws);

  ws.on('message', (data) => {
    for (const client of rooms[ws.room]) {
      if (client.readyState === WebSocket.OPEN) {
        client.send(data);
      }
    }
  });
});

在上面的代码中,我们使用 ws.on('message', ...) 监听客户端发来的消息。在每个连接中,我们迭代房间中的所有连接,并发送消息到 client.readyState === WebSocket.OPEN 的连接。

结论

通过以上步骤,我们已经成功在 WS 节点 JS 中创建了房间。为了使代码更加易于理解和维护,请确保将功能拆分成小模块,并使用注释来解释每个功能的目的。