📌  相关文章
📜  使用 nodejs socket.io 向特定房间发出套接字 - Javascript (1)

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

使用 nodejs socket.io 向特定房间发出套接字

在使用 Node.js 中的 Socket.IO 时,有时我们需要向指定的房间发送套接字,而不是向所有连接的客户端广播消息。这可以使用 Socket.IO 提供的 room 功能实现。

创建 Socket.IO 服务器

首先要做的就是创建 Socket.IO 服务器。这可以通过以下代码来完成:

const http = require('http');
const server = http.createServer();
const io = require('socket.io')(server);

server.listen(3000, () => {
  console.log('Server started on port 3000');
});

io.on('connection', function (socket) {
  console.log('New client connected');

  socket.on('disconnect', function () {
    console.log('Client disconnected');
  });

  socket.on('joinRoom', function (roomId) {
    // 将 Socket 加入指定房间
    socket.join(roomId);
    console.log('Client joined room: ' + roomId);
  });
});

在此代码中,我们创建了一个 HTTP 服务器并将其传递给 Socket.IO,以便在创建时绑定到相同的端口。我们还添加了一个 connection 事件监听器,以在客户端连接到服务器时触发,然后是一个 disconnect 事件监听器,以在客户端断开连接时触发。最后,我们还添加了一个称为 joinRoom 的事件监听器,该监听器接收一个名为 roomId 的参数,并将 Socket 加入指定的房间中。

向特定房间发送信息

我们可以使用 Socket.IO 提供的 to 方法,将套接字广播到特定的房间。以下是一个示例代码:

socket.on('sendMessageToRoom', function (roomId, message) {
  // 将套接字广播到指定房间
  io.to(roomId).emit('receiveMessage', message);
});

在此代码中,我们将 Socket 放在指定的房间中(通过在 joinRoom 事件监听器中的 socket.join(roomId) 代码),然后使用 io.to(roomId) 方法选择房间,并使用 emit 方法发送信息。

总结

以上就是使用 Node.js 中的 Socket.IO 向特定房间发送套接字的方法。我们可以使用 join() 将 Socket 加入房间中,使用 io.to(roomId) 选择房间,然后使用 emit 方法发送信息。这使我们可以与特定用户子集通信,而不是整个客户端连接。