Javascript 如何存储套接字id并发送给该用户

Javascript 如何存储套接字id并发送给该用户,javascript,node.js,socket.io,Javascript,Node.js,Socket.io,嘿,伙计们,我正在使用socket.io和node开发一个webrtc应用程序,我有一个问题,我在mongodb中创建了一个数据库来存储创建房间的每个管理员,然后在用户加入房间时获取管理员id,但我的问题是如何存储id并发送给特定用户。我尝试使用io.to(socketID).emit(事件,消息),但它没有向用户发送。请帮助 我的代码 const users = {} const admins = {} io.on('connection',socket =>{ socket.o

嘿,伙计们,我正在使用socket.io和node开发一个webrtc应用程序,我有一个问题,我在mongodb中创建了一个数据库来存储创建房间的每个管理员,然后在用户加入房间时获取管理员id,但我的问题是如何存储id并发送给特定用户。我尝试使用io.to(socketID).emit(事件,消息),但它没有向用户发送。请帮助 我的代码

const users = {} 
const admins = {}


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

socket.on('join-class',async(classId,palsid)=>{
  
      socket.join(classId)

      const gEtLectID = await LiveClass.findOne({"address":classId})
      if(gEtLectID){
        socketId = gEtLectID.startedBy 
      }
      console.log(socketId,'is admin')
      io.to(socketId).emit('user-connected', "let's play a game");
      
      // socket.to(admins[socket.id]).emit('user-connected',userID)
      

      //on disconnection
      socket.on('disconnect',()=>{
          socket.to(classId).broadcast.emit('user-disconnect',palsid)
      })

   
  })
  

您需要在客户端中处理id。向服务器发送事件时,请包含toId和fromId。因此,在客户端
var socket=io(“http://127.0.0.1:3000/“,{query:“id=4ny1d”})

在服务器中

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

    var id = socket.handshake.query['id'];

    socket.leave(socket.id);//leaving default room
    socket.join(id);//joining to custom room(this is admin room)

    //maybe you'll want a roomId, but the steps are the same

    socket.on('join-class', data => {

        socket.join(data.classId);//Here you join to the class
        socket.emit('class-ready', data);//message with class info to the suscriber

        //here you can store classId in a var or in an array to use socket.to().emit()

    })
}

我会添加一些日志记录。看看你是否真的得到了一个gEtLectID。另外,通过使用
socket.on('error',()=>{})
订阅错误事件,向socket.io模块添加一些日志记录。也许你/我们可以看到这里到底出了什么问题。这是任何授权的常见问题。可以通过多种方式解决。会话库或令牌库。