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 - 如何为已定义的 JavaScript 对象定义 getter 属性?

c# - 使用 Javascript 访问 GridViewRow 中的 Label 控件

Node.js(带 socket.io 和 express)抛出 "events.js:71 throw arguments[1];//Unhandled ' 错误事件”

javascript - 如何正确导入 javascript 函数并将其用于 node.js 脚本?

javascript - OpenWhisk - socket.io - 客户端可能吗?

javascript - 可展开横幅的标准 z 索引。

Javascript 如何在字符串中包含随机大写字母时使用 .includes()

node.js - 如何在 Node 中触发 Mongoose 保存的套接字事件?

node.js - Node.js 是否优先考虑 I/O 事件而不是 setTimeout()?

javascript - Lodash Js 使用数组和对象创建树结构