IM-System版本0.5提供查询查询在线用户列表功能

This commit is contained in:
wandoubaba 2024-11-24 12:51:01 +08:00
parent a31fda099c
commit cce1bb6d1d

View File

@ -1,6 +1,9 @@
package main
import "net"
import (
"fmt"
"net"
)
type User struct {
Name string
@ -45,9 +48,25 @@ func (user *User) Offline() {
user.server.BroadCast(user, "下线了")
}
func (user *User) SendMsg(msg string) {
user.conn.Write([]byte(msg))
}
// User类的成员方法处理用户消息
func (user *User) DoMessage(msg string) {
user.server.BroadCast(user, msg)
// 约定查询在线用户指令who
if msg == "who" {
// 查询当前在线用户列表
user.server.mapLock.Lock()
for _, onlineuser := range user.server.OnlineMap {
onlineMsg := fmt.Sprintf("[%s]%s:在线\n", onlineuser.Addr, onlineuser.Name)
// 只向当前这个user发送消息
user.SendMsg(onlineMsg)
}
user.server.mapLock.Unlock()
} else {
user.server.BroadCast(user, msg)
}
}
// User类的成员方法: 监听消息