IM-System版本0.6客户端通过rename指令修改用户名
This commit is contained in:
parent
cce1bb6d1d
commit
9e012b21b7
@ -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)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user