所以我有一個聊天應用程序,其中一次只有兩個用戶可以在一個房間裏。node.js socket.io應用程序 - 如何從聊天室踢人?
請注意,clientInfo是一個全局變量,每當有新用戶加入房間時,對象變量都會通過用戶名和房間名稱傳遞給服務器。然後這個代碼被執行
socket.on('joinRoom', function(userDetails){
clientInfo[socket.id] = userDetails; //variable contains name and room joined.
socket.join(userDetails.room);
}
我增加了一個功能,使用戶可以鍵入「踢」作爲聊天消息,這將調用這個函數:
function kickUser(socket){
socket.leave(clientInfo[socket.id].room);
delete clientInfo[socket.id];
}
上面的代碼工作正常,但我怎樣才能改變功能踢房間裏的其他用戶?我嘗試了下面的代碼,但我仍然結束了自己的腳步。我認爲,socket.leave()不關心套接字ID,但它只是使用房間名稱和調用函數的人。
function kickUser(socket){
var info = clientInfo[socket.id];
if (typeof info == 'undefined'){
return;
}
Object.keys(clientInfo).forEach(function(socketId){
if(info.room == clientInfo[socketId].room) {
if (info.name != clientInfo[socketId].name){
socket.leave(clientInfo[socketId].room);
delete clientInfo[socketId];
}
}
});
}
你想讓每個用戶可以踢另一個用戶和自己嗎?或者你需要通過服務器(=管理員)踢用戶? –
我想我的答案對兩個問題都是肯定的。我基本上希望能夠選擇我想踢出哪兩個用戶。目前,如果任何用戶試圖將某人踢出去,那麼某個人將成爲他自己。 – Jay