Java课程设计--网络聊天室
简易网络聊天室
项目git地址
git提交记录
前期调查
在聊天室中的每个用户可以发送消息,发送的消息分为群聊消息和私聊消息,每两个用户的聊天消息显示在一个界面上,每个群组的聊天消息显示在一个界面上。通过netty框架来编写服务器端的转发 消息代码,客户端对每个消息的处理代码。
功能流程图
面向对象设计类图
服务器端UML类图
客户端UML类图
关键代码分析
服务器端转发群聊消息代码
在ChannelUtils这个类中存储了许多map,其中一个map存储一个字符串类型的id和与之对应的ChannelGroup,服务器就是通过这个id获得ChannelGroup从而转发给ChannelGroup中的每个客户端,这样在一个群组里的其他客户端就能收到任何一个客户端发送的信息
服务器端转发私聊消息代码
ChannelUtils中还有一个map存储每个用户的id和与之对应的Channel,通过这个Channel服务器端可以传输数据到客户端。当私聊消息传输到服务器端时,服务器端从消息中取出此消息的接收端id,然后通过id获取对应的Channel,再将消息封装好发送到接收端
客户端接收群聊消息代码(ClientChatMessageHandler类)
当服务器发送信息到客户端时,如果是群聊信息,客户端会自动调用ClientChatMessageHandler中的channelRead0方法。通过传输的信息,可以获得发送端的id和此消息属于哪个聊天界面,然后客户端调用方法将消息显示到聊天窗口中
客户端接收私聊消息代码