系列文章目录
跟着😽猫猫学Golang,快人一步
系列初开,跟着我走进Go 语言的世界里🌍
系列目录
Golang 从零开始实现多人聊天室(一)服务端监听
Golang 从零开始实现多人聊天室(二)客户端访问
Golang 从零开始实现多人聊天室(三)上线通知与公屏聊天
文章目录
😺前言
运用 go 里面的net包中的相关方法来实现一个基于tcp的简单多人聊天室
实现
- 加入聊天室
- 广播通知
- 重新登录
- 上线与离线通知
- 公屏聊天
- 群聊
- 单聊
- 退出与注销
建立文件目录进行服务端与客户端区分
服务端代码就写在server 文件夹下的 server 文件中
客户端代码就写在cliemt 文件夹下的 client文件中
项目代码持续更新
多人聊天室
https://github.com/moercat/go-chatroom
此时更新到离线与用户信息修改
一、服务端 client
客户端的离线与注销要区别开来,
- 离线 也就是我们可以重新登陆,还要保留我们的用户信息
- 注销 也就是我们离开该服务器,那么我们就要删除连接信息
1.用户信息
为了区分离线与注销,我们为每个客户端新建一个用户信息模型
type User struct {
Age string //年龄
Sex string //性别
}
存入Client模型中,表示每一个人有他们对应的信息
type Client struct {
Conn net.Conn // 连接信息
Name string // 别名
IsQuit bool // 是否退出
User
}
也等于下方模型
type Client struct {
Conn net.Conn // 连接信息
Name string // 别名
Age string //年龄
Sex string //性别
}
2.离线
如果我们想要退出聊天室,那么我们就不能与服务器再次通信,需要重新建立连接。所以我们新建一个方法Quit 来处理退出,
switch cMsg.Op {
case Read:
cMsg.Read()
case Quit:
cMsg.Quit()
case NtyLogin:
cMsg.ntyLogin()
default:
fmt.Println("无效OP")
}
func (m Message) Quit() {
fmt.Printf("%v 用户[%s]: 退出 \n", time.Now().Format("2006-01-02 15:04:05"), m.Name