【发布时间】:2017-01-01 12:32:42
【问题描述】:
我已经完成了socket.io聊天室的教程。我希望能够通过输入 /mute *person-name* 在聊天室中将某人静音(不再接收他的聊天),然后通过输入 /unmute *person-name* 取消静音并通过输入 /whisper *person-name* 与特定的人聊天
关于如何做到这一点的任何想法?
【问题讨论】:
我已经完成了socket.io聊天室的教程。我希望能够通过输入 /mute *person-name* 在聊天室中将某人静音(不再接收他的聊天),然后通过输入 /unmute *person-name* 取消静音并通过输入 /whisper *person-name* 与特定的人聊天
关于如何做到这一点的任何想法?
【问题讨论】:
试试这个
要处理静音命令,使用字符串操作来检查消息的第一个字母是否是“/”,以及命令中是否有“静音”。您将需要一个用户列表来循环查看谁被静音。
socket.on('chat message', function(msg) {
if(msg.charAt(0) == "/") {
//Process command
command = msg.substring(1, msg.length);
//unmute
if (command.includes("unmute")) {
for (var i = 0; i < your_user_list.length; i++) {
if (command.includes(your_user_list[i].username)) {
your_user_list[i].muted = false;
}
}
} //mute
else if (command.includes("mute")) {
for (var i = 0; i < your_user_list.length; i++) {
if (command.includes(your_user_list[i].username)) {
your_user_list[i].muted = true;
}
}
}
}
else {
//Send message
console.log(socket.username + ": " + msg);
io.emit('chat message', socket.username + ": " + msg);
}
});
要使某人静音,请向套接字添加成员变量
socket.muted = true;
然后检查用户是否被静音,每次他们提交这样的消息。
socket.on('chat message', function(msg) {
if(!socket.muted) {
//Allow the user to chat
if(msg.charAt(0) == "/") {
//Process command
command = msg.substring(1, msg.length);
//unmute
if (command.includes("unmute")) {
for (var i = 0; i < your_user_list.length; i++) {
if (command.includes(your_user_list[i].username)) {
your_user_list[i].muted = false;
}
}
} //mute
else if (command.includes("mute")) {
for (var i = 0; i < your_user_list.length; i++) {
if (command.includes(your_user_list[i].username)) {
your_user_list[i].muted = true;
}
}
}
}
else {
//Send message
console.log(socket.username + ": " + msg);
io.emit('chat message', socket.username + ": " + msg);
}
}
else {
//Tell them they are muted
}
});
【讨论】: