欢迎来到天天文库
浏览记录
ID:31359376
大小:110.00 KB
页数:7页
时间:2019-01-09
《基于netty+websocket的社区增值服务平台的推送设计》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、基于Netty+WebSocket的社区增值服务平台的推送设计 摘要:通过对比国内外同类软件,服务端采用Netty+WebSocket技术,客户端采用基于Android平台的JSON解析技术,设计并实现了一款智能小区增值服务软件系统,可以向小区用户分组及时推送重要资讯,向小区周围配套服务系统提供接口。文中主要介绍了该系统推送服务的设计原理。 关键词:Netty;WebSocket;JSON;增值平台 中图分类号:TP393.0文献标识码:A文章编号:2095-1302(2016)12-00-
2、03 0引言 随着人们逐渐从PC解放,需求开始转移到移动设备的应用上。目前福建地区的小区住户、物业和周边配套服务都还处于离散状态,人们迫切希望有一款基于移动设备的智能社区服务平台,可以通过该系统方便住户随时获取小区的重要资讯,了解住宅的实时情况,监控和控制住宅内的电器设备。而小区周边的其他配套服务系统可以通过该平台提供的接口直接与平台对接,向住户提供服务。 1系统设计原理图 本系统建立在J2EE平台上,运用MySQL数据库管理系统将JSON解析与Netty、7WebSocket等技术相结合
3、,构建更加智能的社区增值服务平台。社区增值服务系统搭建在云平台之上,充分利用现代化信息技术手段实现社区管理及服务的信息化、集约化,依托云平台的理念和优势,将已有的专业系统纳入其中,为社区居民、物业管理、周边服务机构提供便利丰富的终端服务。系统设计原理图如图1所示。 该平台的亮点是信息的分类推送,开发之前对信息推送的两种方式进行分析: (1)第一种是客户端使用Pull(拉)的方式,即定时到服务器上获取,看是否有更新的信息。 (2)第二种是服务器使用Push(推送)的方式,把最新的信息Push到
4、客户端上。 虽然Pull和Push两种方式都能实现获取服务端更新信息的功能,但Push方式比Pull方式更优越[1,2]。 本文通过对比分析国内现有的移动设备推送解决方案,采用Netty+WebSocket持久连接的方式,实现了消息的实时性推送和分类推送。 2推送与控制实现 平台可实现系统用户的需求,如查看家中的光照强度、室内温度、空气湿度、烟雾浓度等实时数据,并对家中的家居进行控制操作,对硬件与手机之间的链接通信进行了详细合理的设计。Netty与WebSocket的结合完美解决了此通路问
5、题,为实现平台的实时推送和分类推送奠定了基础。 2.1推送的设计与实现 平台的服务器分为NettyServer与WebSocketServer两个部分。 (1)NettyServer集成了WebSocket7Client,用来实现与各硬件之间的数据传送,NettyServer在初始化时与WebSocketServer建立长链接; (2)WebSocketServer实现了与集成在Netty服务器中的WebSocketClient之间的数据传送以及与用户手机端(或网页)的交互。 推送和控制
6、详细设计原理图如图2所示。 平台将传感器的数据推送到用户的流程描述:单片机采集各传感器的实时数据,将这些数据通过TCP上传到Netty服务器,当TCP与Netty服务器第一次建立连接时,触发channelActive()方法建立通道,该通道在传感器断开之前一直存在,此后传感器定时发送数据,并直接触发channelRead0()方法接收,接收到的数据由集成在本服务器的WebSocketClient模块处理,通过WebSocketClient.send()方法发送给WebSocket服务器,WebS
7、ocket服务器中的WebSocketServer通过onMessage()方法接收,接收到实时数据后,则由client.session.getBasicRemote().sendText(msg)将数据推送给手机或网页终端。 Netty服务器采用多线程服务器,对于每一个连接请求,dispatcher都会为其创建并分配一个线程,该线程负责这个请求的处理,优点是执行粒度是完整的处理流程,处理逻辑清晰,易于开发。但也存在随着处理请求的不断增加,会导致并发执行的线程数量太多等问题。过多的线程数量会导致
8、系统在线程调度和资源争用上的开销过大,从而引起系统性能急剧下降,导致系统处理能力下降。该平台采用了改进措施,引入线程池,系统最多只能创建一定数量的线程,该平台规定最多能创建的线程数量为100。当所有线程都饱和运行时,新到达的处理请求只能等待或者被抛弃。7 在实现WebSocket的链接过程中,客户端和普通的浏览器都通过80或者443端口和服务器进行请求握手,服务器根据httpheader识别是否是一个WebSocket请求,如果是,则将请求升级为一个WebSocket连接,握手成
此文档下载收益归作者所有