So habe ich Chat-App, in der nur zwei Benutzer in einem Raum gleichzeitig sein können.node.js socket.io App - Wie man jemanden aus dem Chat-Raum kickt?
Bitte beachten Sie, dass clientInfo eine globale Variable ist und jedes Mal, wenn ein neuer Benutzer einem Raum beitritt, wird eine Objektvariable an den Server mit Benutzername und Raumname übergeben. Dann wird dieser Code
ausgeführtsocket.on('joinRoom', function(userDetails){
clientInfo[socket.id] = userDetails; //variable contains name and room joined.
socket.join(userDetails.room);
}
ich eine Funktion hinzugefügt, wo ein Benutzer ‚Kick‘ als Chatnachricht eingeben können, die diese Funktion aufrufen wird:
function kickUser(socket){
socket.leave(clientInfo[socket.id].room);
delete clientInfo[socket.id];
}
der obige Code funktioniert gut, aber wie kann ich Ändern Sie die Funktion, um den anderen Benutzer im Raum zu treten? Ich habe den Code unten ausprobiert, aber am Ende habe ich mich selbst rausgeworfen. Ich nehme an, dass socket.leave() sich nicht um die Socket-ID kümmert, sondern nur den Raumnamen und die Person, die die Funktion aufgerufen hat.
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];
}
}
});
}
Möchten Sie, dass jeder Benutzer einen anderen Benutzer und selbst treten kann? Oder brauchst du kick user by server (= admin)? –
Ich denke, meine Antwort wäre ja auf beide Fragen. Ich möchte im Grunde wählen können, welche der beiden Benutzer ich herauswerfen möchte. Wenn jetzt jemand versucht, jemanden rauszuschmeißen, wird dieser Jemand er selbst sein. – Jay