Python 官方文档:入门教程 => 点击学习
目录0. 前言1、技术准备2. 整体说明2.1 设计思想2.2 系统结构2.3 项目结构2.4 系统功能模块2.5 系统界面3. 核心编码3.1 Netty服务器启动与关闭4. 效果
决定以Netty为核心,以websocket为应用层通信协议做一个互联网聊天系统,整体而言就像微信网页版一样,但考虑到这个聊天系统的功能非常多,因此只打算实现核心的聊天功能,包括单发、群发、文件发送,然后把项目与spring整合做成开源、可拓展的方式,给大家参考、讨论、使用,欢迎大家的指点。
关于Netty
Netty 是一个利用 Java 的高级网络的能力,隐藏其背后的复杂性而提供一个易于使用的 api 的客户端/服务器框架。
关于WebSocket通信协议
WEBSocket是为了解决Http协议中通信只能由客户端发起这个弊端而出现的,WebSocket基于HTTP5协议,借用HTTP进行握手、升级,能够做到轻量的、高效的、双向的在客户端和服务端之间传输文本数据。
IDE:MyEclipse 2016
jdk版本:1.8.0_121
浏览器:谷歌浏览器、360浏览器(极速模式)(涉及网页前端设计,后端开发表示很苦闷)
涉及技术:
整个通信系统以Tomcat作为核心服务器运行,其下另开一个线程运行Netty WebSocket服务器,Tomcat服务器主要处理客户登录、个人信息管理等的HTTP类型请求(通常的业务类型),端口为8080,Netty WebSockt服务器主要处理用户消息通信的WebSocket类型请求,端口为3333。用户通过浏览器登录后,浏览器会维持一个Session对象(有效时间30分钟)来保持登录状态,Tomcat服务器会返回用户的个人信息,同时记录在线用户,根据用户id建立一条WebSocket连接并保存在后端以便进行实时通信。当一个用户向另一用户发起通信,服务器会根据消息内容中的对话方用户id,找到保存的WebSocket连接,通过该连接发送消息,对方就能够收到即时收到消息。当用户注销或退出时,释放WebSocket连接,清空Session对象中的登录状态。(插播一条广告:需要开通正版idea的可以联系我,56元一年,正版授权激活,官网可查有效期,有需要的加我微信:poxiaozhiai6,备注:914。)
事实上Netty也可以用作一个HTTP服务器,而这里使用Spring MVC处理HTTP请求是出于熟悉的缘故,也比较接近传统开发的方式。
系统采用B/S(Browser/Server),即浏览器/服务器的结构,主要事务逻辑在服务器端(Server)实现。借鉴MVC模式的思想,从上至下具体又分为视图层(View)、控制层(Controller)、业务层(Service)、模型层(Model)、数据访问层(Data Access)
项目后端结构:
项目前端结构:
系统只包括两个模块:登录模块和聊天管理模块。
由于本系统涉及多个用户状态,有必要进行说明,下面给出本系统的用户状态转换图。
系统聊天界面如下:
这里只说明需要注意的地方,详细的请看源码
当关闭Tomcat服务器时,也要释放Netty相关资源,否则会造成内存泄漏,关闭方法如下面的close(),如果只是使用shutdownGracefully()方法的话,关闭时会报内存泄露Memory Leak异常(但IDE可能来不及输出到控制台)
public class WebSocketServer implements Runnable{
public void build() {
// 略,详细请看源码
}
public void close(){
serverChannelFuture.channel().close();
Future<?> bossGroupFuture = bossGroup.shutdownGracefully();
Future<?> workerGroupFuture = workerGroup.shutdownGracefully();
try {
bossGroupFuture.await();
workerGroupFuture.await();
} catch (InterruptedException ignore) {
ignore.printStackTrace();
}
}
}
登录入口为:http://localhost:8080/WebSocket/login 或 http://localhost:8080/WebSocket/ 当前系统用户固定为9个,群组1个,包括9人用户。
下载链接: https://pan.baidu.com/s/1JuXRqWH0HFN0ruMm-BnysA
提取码: e9ej
以上就是基于Java实现互联网实时聊天系统(附源码)的详细内容,更多关于Java实时聊天系统的资料请关注编程网其它相关文章!
--结束END--
本文标题: 基于Java实现互联网实时聊天系统(附源码)
本文链接: https://www.lsjlt.com/news/167560.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0