为什么Socket.io发出后要清空房间

时间:2018-07-27 04:42:22

标签: javascript node.js sockets socket.io

我正在使用已知的socketId向一个特定的用户发送消息:

io.to(thisKnownSocketId).emit('eventName')

为简化下一个发射,我制作了变量:

const currentSocket = io.to(thisKnownSocketId)

任何方法都只能运行一次:

currentSocket.emit('event1')
currentSocket.emit('event2')

上面的代码将event1发送到适当的thisKnownSocketId,这很不错,但是event2将发送给所有不好的人。我发现在第一次发出currentSocket之前有.rooms = [thisKnownSocketId],而在刚发出之后没有。 现在,我遭到了黑客入侵:

const fixTargetRoom = (socket, taskName, taskArgs) => {
  const oldRooms = socket.rooms
  socket.emit(taskName, ...taskArgs)
  if (oldRooms.length) socket.rooms = oldRooms

}

但是感觉不对。知道吗,为什么发射后房间正在打扫?

0 个答案:

没有答案