QQ 群 851732010
并发编程和网络编程是现今行业开发中常用的技术。Go 语言强大的语法设定使得并发和网络编程都变的简洁而高效。
下面我们利用前面学到的知识,使用并发和网络实现一个简单的网络在线聊天室。体会下这两种技术的实际应用。在整个聊天室的项目中,充分利用了 go 程并发,处理不同任务。
整个聊天室程序可简单划分为如下模块,都分别使用 go 程来实现:
主 go** 程(服务器):**
负责监听、接收用户(客户端)连接请求,建立通信关系。同时启动相应的 go 程处理任务。
处理连接用户数据 go** 程:HandleConnect **
负责新上线用户的存储,用户消息读取、发送,用户改名、下线处理及超时处理。
为了提高并发效率,同时给一个用户维护多个 go 程来并行处理上述任务。
用户消息广播 go** 程:Manager**
负责在线用户遍历,用户消息广播发送。需要与 HandleConnect go 程及用户子 go 程协作完成。
go** 程间应用数据及通信:**
map:存储所有登录聊天室的用户信息, key:用户的 ip+port。Value:Client 结构体。
Client 结构体:包含成员:用户名 Name,网络地址 Addr(ip+port),发送消息的通道 C(channel)
通道 message:协调并发 go 程间消息的传递。
#1