spring集成mina
在学习mina这块时,在网上找了很多资料,只有一些demo,只能实现客户端向服务端发送消息、建立长连接之类。但是实际上在项目中,并不简单实现这些,还有业务逻辑之类的处理以及消息的推送之类的。于是就单独建立了一个工程项目,能够实现客户端和服务端相互之间发送消息、建立长连接、实现心跳检测等功能。
例如:可以实现客户端A向服务端发送消息,服务端将消息转发给客户端B。
效果实现图
服务端启动成功后, 客户端A绑定服务端。
客户端B向服务端发送信息,请求服务端向客户端A推送消息
客户端A受到服务端转发的客户端B的消息
服务端心跳检测的实现
代码的目录结构
那么开始实现代码的编写。(可以直接跳到底部,通过链接下载工程代码)
首先在官网上下载mina以及spring相关架包,这里相关架包已准备好:http://download.csdn.net/detail/qazwsxpcm/9870787
服务端
====
首先实现数据传输对象、消息常量的代码编写。
我使用的两个传输对象,接受和发送,代码如下。(传输对象可以自行定义)。
|
|
|
|
|
|
实现心跳检测功能。
服务端发送的是hb_request,那么客户端就应该返回hb_response,以此来实现心跳检测。
|
|
实现服务端代码编写
服务端代码这块,因为注释写的已经够详细了,所以这里就不细说了。
实现session容器
如果需要保证线程安全,可以使用 ConcurrentHashMap,作为session容器。
|
|
|
|
实现业务逻辑处理器。
因为注释写的已经够详细了,所以这里就不细说了。
做了简单业务逻辑处理,如有需要可以自行更改。
|
|
实现业务逻辑代码。
目前实现了绑定,推送以及关闭逻辑代码。如有需要,可自行增加。
|
|
|
|
|
|
|
|
spring配置
可以将过滤器添加到spring这块,包括心跳设置。
客户端
===
编写业务逻辑处理器
几乎和服务端一样,这里因为测试,所以就从简了。
|
|
编写客户端程序。
也几乎和服务端一致,为了简单使用,编写main方法。
注:客户端和服务端的过滤器要一致。
|
|
代码就先告一段落。客户端也可以通过socket和mina进行数据传输,这里就不贴代码了。
spring整合mina,暂时就到这了。项目我放到了github上,地址:https://github.com/xuwujing/springMina/tree/master
如果感觉不错,希望可以给个star。
版权声明:
作者:虚无境
博客园出处:http://www.cnblogs.com/xuwujing
CSDN出处:http://blog.csdn.net/qazwsxpcm
个人博客出处:http://www.panchengming.com
原创不易,转载请标明出处,谢谢!