javascript - Socket.io - 套接字分成房间

标签 javascript node.js socket.io

我正在尝试创建一个多人游戏,为每个连接的两个 socket 创建新房间。我该怎么做呢?有人可以举个例子吗?

最佳答案

您可以使用以下示例作为起点

const io = require('socket.io')()

/* room to join next connected socket */
let prevRoom = null

io.on('connection', socket => {
  let room

  if (prevRoom == null) {
    /* create new room if there is no room with one player */
    room = Math.random().toString(36).slice(2)
    prevRoom = room
  } else {
    /* join existing room with one player and mark that it is now complete */
    room = prevRoom
    prevRoom = null
  }

  socket.join(room)

  /* send message from one socket in this room to another */
  socket.on('message', data => {
    socket.broadcast.to(room).emit('message', data)
  })
})

io.listen(3000)

此示例的问题在于,如果房间中的一名玩家离开游戏,另一名玩家将保持单独状态,直到他或她刷新页面。根据应用程序,您可能需要在此处添加一些逻辑。

关于javascript - Socket.io - 套接字分成房间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43124076/

相关文章:

javascript - 使用 forge.js 使用 AES-CBC 和 PKCS#7 填充来加密消息

javascript - 对象 #<HTMLFormElement> 的属性 'submit' 不是函数

javascript - 竞争条件与 bcrypt 的加密计时并添加新的 mongo db 文档

javascript - 语义 UI 事件

javascript - 将内联 JavaScript 传输到外部文件

javascript - Typeerror 不是构造函数

javascript - 如何将配置文件加载到 Angular 对象

javascript - Facebook 和 google 如何随机化 html 选择器 id 和类名?

java - 如何在 Java 中运行 Socket.IO 客户端-服务器

javascript - express-session 不会设置 cookie connect.sid