前言
使用Go语言开发一个网络群聊天室
部署在Linux环境 CentOS系统
类似于QQ群的效果
功能:
用户上线时通知所有人
用户下线时通知所有人
用户发送消息 所有在线用户会接收到
用户挂机超时会被自动下线
用户可以查询当前所有在线的用户 \who命令
用户可以更改自己的昵称 \rename|new_name命令
核心思路
一、启动主GO程 用于接收各个客户端发来的连接请求
二、对于每一个成功连接的客户端 启动一个子GO程进行业务处理
1.通过MAP数据结构管理所有在线的用户信息
2.每一个连接(用户)都有一个私有管道msg用于接收数据
3.由一个全局管道message和配套的全局广播函数实现群发功能
细节处理
一、如何使所有在线的用户(客户端)接收到消息?
先在主GO程中启动全局广播函数:
创建一个全局管道变量message
全局广播函数遍历MAP数据结构 确定所有在线用户
将message管道中的信息依次发送给每一个用户的私有msg管道
每一个