[英]How to store socket id and emit to that user
嘿伙計們,我正在使用 socket.io 和 node 開發 webrtc 應用程序,我遇到了這個問題,我在 mongodb 中創建了一個數據庫來存儲創建房間的每個管理員,然后在用戶加入房間時獲取管理員 ID,但是我的問題是我如何存儲 id 並發送給該特定用戶。 我嘗試使用 io.to(socketID).emit(event,message) 但它沒有發送給用戶請幫助我的代碼
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()
})
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.