Socket.io - 套接字拆分成房间 [关闭]

Posted

技术标签:

【中文标题】Socket.io - 套接字拆分成房间 [关闭]【英文标题】:Socket.io - Socket splitting into rooms [closed] 【发布时间】:2017-08-24 17:53:15 【问题描述】:

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

【问题讨论】:

Creating Rooms in Socket.io的可能重复 【参考方案1】:

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

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)

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

【讨论】:

以上是关于Socket.io - 套接字拆分成房间 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何更新房间内所有客户端的套接字对象? (socket.io)

一次加入多个房间 Socket.io

socket io 广播、房间和确认功能

socket io 广播、房间和确认功能

( Socket.io ) 一个socket连接多个房间

在连接时加入套接字 io 房间