IM-System版本0.6客户端通过rename指令修改用户名

This commit is contained in:
wandoubaba 2024-11-24 13:01:35 +08:00
parent cce1bb6d1d
commit 9e012b21b7

View File

@ -3,6 +3,7 @@ package main
import (
"fmt"
"net"
"strings"
)
type User struct {
@ -54,9 +55,8 @@ func (user *User) SendMsg(msg string) {
// User类的成员方法处理用户消息
func (user *User) DoMessage(msg string) {
// 约定查询在线用户指令who
if msg == "who" {
// 查询当前在线用户列表
// 约定查询在线用户指令who
user.server.mapLock.Lock()
for _, onlineuser := range user.server.OnlineMap {
onlineMsg := fmt.Sprintf("[%s]%s:在线\n", onlineuser.Addr, onlineuser.Name)
@ -64,6 +64,24 @@ func (user *User) DoMessage(msg string) {
user.SendMsg(onlineMsg)
}
user.server.mapLock.Unlock()
} else if len(msg) > 7 && msg[:7] == "rename|" {
// 约定rename|xx指令为定义我的用户名指令
newName := strings.Split(msg, "|")[1]
// 查询newName在当前在线列表中是否已经存在
_, ok := user.server.OnlineMap[newName]
if ok {
user.SendMsg(fmt.Sprintf("用户名%s已被占用\n", newName))
} else {
user.server.mapLock.Lock()
delete(user.server.OnlineMap, user.Name)
user.server.OnlineMap[newName] = user
user.server.mapLock.Unlock()
// 向大家广播一下新名字
user.server.BroadCast(user, fmt.Sprintf("修改了用户名为%s\n", newName))
user.Name = newName
// 自本人反馈一下改名成功
user.SendMsg(fmt.Sprintf("你已经修改用户名为%s\n", user.Name))
}
} else {
user.server.BroadCast(user, msg)
}