基于Netty+WebSocket的社区增值服务平台的推送设计

上传人:冷*** 文档编号:20125824 上传时间:2021-02-18 格式:DOCX 页数:4 大小:15.14KB
收藏 版权申诉 举报 下载
基于Netty+WebSocket的社区增值服务平台的推送设计_第1页
第1页 / 共4页
基于Netty+WebSocket的社区增值服务平台的推送设计_第2页
第2页 / 共4页
基于Netty+WebSocket的社区增值服务平台的推送设计_第3页
第3页 / 共4页
资源描述:

《基于Netty+WebSocket的社区增值服务平台的推送设计》由会员分享,可在线阅读,更多相关《基于Netty+WebSocket的社区增值服务平台的推送设计(4页珍藏版)》请在装配图网上搜索。

1、基于Netty+WebSocket的社区增值服务平台的推送设计摘 要:通过对比国内外同类软件,服务端采用Netty+WebSocket技术,客户端采用基于Android平台的JSON解析技术,设计并实现了一款智能小区增值服务软件系统,可以向小区用户分组及时推送重要资讯,向小区周围配套服务系统提供接口。文中主要介绍了该系统推送服务的设计原理。关键词:Netty;WebSocket;JSON;增值平台中图分类号:TP393.0 文献标识码:A 文章编号:2095-1302(2016)12-00-030 引 言随着人们逐渐从PC解放,需求开始转移到移动设备的应用上。目前福建地区的小区住户、物业和周边

2、配套服务都还处于离散状态,人们迫切希望有一款基于移动设备的智能社区服务平台,可以通过该系统方便住户随时获取小区的重要资讯,了解住宅的实时情况,监控和控制住宅内的电器设备。而小区周边的其他配套服务系统可以通过该平台提供的接口直接与平台对接,向住户提供服务。1 系统设计原理图本系统建立在J2EE平台上,运用 MySQL数据库管理系统将 JSON解析与Netty、 WebSocket等技术相结合,构建更加智能的社区增值服务平台。社区增值服务系统搭建在云平台之上,充分利用现代化信息技术手段实现社区管理及服务的信息化、集约化,依托云平台的理念和优势,将已有的专业系统纳入其中,为社区居民、物业管理、周边服

3、务机构提供便利丰富的终端服务。系统设计原理图如图1所示。该平台的亮点是信息的分类推送,开发之前对信息推送的两种方式进行分析:(1)第一种是客户端使用Pull(拉)的方式,即定时到服务器上获取,看是否有更新的信息。(2)第二种是服务器使用Push(推送)的方式,把最新的信息Push到客户端上。虽然Pull和Push两种方式都能实现获取服务端更新信息的功能,但Push方式比Pull方式更优越。本文通过对比分析国内现有的移动设备推送解决方案,采用Netty+WebSocket持久连接的方式,实现了消息的实时性推送和分类推送。2 推送与控制实现平台可实现系统用户的需求,如查看家中的光照强度、室内温度、

4、空气湿度、烟雾浓度等实时数据,并对家中的家居进行控制操作,对硬件与手机之间的链接通信进行了详细合理的设计。Netty与WebSocket的结合完美解决了此通路问题,为实现平台的实时推送和分类推送奠定了基础。2.1 推送的设计与实现平台的服务器分为Netty Server与WebSocket Server两个部分。(1)Netty Server集成了WebSocket Client,用来实现与各硬件之间的数据传送,Netty Server在初始化时与WebSocket Server建立长链接;(2)WebSocket Server实现了与集成在Netty服务器中的WebSocket Client

5、之间的数据传送以及与用户手机端(或网页)的交互。推送和控制详细设计原理图如图2所示。平台将传感器的数据推送到用户的流程描述:单片机采集各传感器的实时数据,将这些数据通过TCP上传到Netty服务器,当TCP与Netty服务器第一次建立连接时,触发channelActive()方法建立通道,该通道在传感器断开之前一直存在,此后传感器定时发送数据,并直接触发channelRead0()方法接收,接收到的数据由集成在本服务器的WebSocket Client模块处理,通过WebSocketClient.send()方法发送给WebSocket服务器,WebSocket服务器中的WebSocket S

6、erver通过onMessage()方法接收,接收到实时数据后,则由client.session.getBasicRemote().sendText(msg)将数据推送给手机或网页终端。Netty服务器采用多线程服务器,对于每一个连接请求,dispatcher都会为其创建并分配一个线程,该线程负责这个请求的处理,优点是执行粒度是完整的处理流程,处理逻辑清晰,易于开发。但也存在随着处理请求的不断增加,会导致并发执行的线程数量太多等问题。过多的线程数量会导致系统在线程调度和资源争用上的开销过大,从而引起系统性能急剧下降,导致系统处理能力下降。该平台采用了改进措施,引入线程池,系统最多只能创建一定数

7、量的线程,该平台规定最多能创建的线程数量为100。当所有线程都饱和运行时,新到达的处理请求只能等待或者被抛弃。在实现WebSocket的链接过程中, 客户端和普通的浏览器都通过80或者443端口和服务器进行请求握手,服务器根据http header识别是否是一个WebSocket请求,如果是,则将请求升级为一个WebSocket连接,握手成功后就进入双向长连接的数据传输阶段。WebSocket的数据传输基于帧方式:0x00 表示数据开始, 0xff表示数据结束,数据以utf-8编码。第一次请求客户端发送的是http请求,请求头中包含WebSocket相关的信息,服务器端对请求进行验证,验证成功

8、后,将请求升级为一个WebSocket连接,之后的通信就进入双向长连接的数据传输阶段,通过send和onMessage方法通信。2.2 分类推送平台采用WebSocket协议不仅实现了Netty服务器与WebSocket服务器的实时通信,在分类通信上也做了一定尝试,如推送工作,推送给哪一类型的用户,可以根据数据的格式来进行划分,在本平台中只做了初步划分,如数据格式为: from:SMSG,room:1201,temperature:1,humidity:2.0,smoke?:3(JSON形式),从room;字段可以知道该数据是准备传送给1201室的用户,目前平台只做了这个分类,平台的下一步工作

9、将在数据的格式上进行进一步细化和分类,如按不同的楼栋,甚至不同的楼层分类,在分类推送上完善平台的功能。2.3 JSON格式通信JSON是一种轻量级数据交换格式,它采用完全独立于语言的文本格式,此特性使JSON成为理想的数据交换语言,易于阅读和编写,同时也易于机器解析和生成,提升网络传输速率。本平台的各数据通信环节均采用JSON格式通信,使用对象和数组两种结构。对象在JSON格式表示为 ;中的内容,数组在JSON格式是中括号;中的内容,通过这两种结构可以表示各种复杂的结构【3】。例如在Netty服务器将这些数据组织成JSON格式: from:SMSG,room:1201,temperature:

10、1,humidity:2.0,smoke?:3,WebSocket Serve接收到数据后根据数据的格式进行判断,该数据由Netty服务器发送过来,可立即根据room找到对应的目标用户,读取其中的温度、湿度和烟雾值,并推送数据。2.4 控制实现当用户发送控制信息时,数据又是如何从手机终端到达控制设备的呢?这个流程和2.1中介绍的推送流程相反。值得一提的是,WebSocket服务器中的WebSocket Server通过onMessage()方法接收,接收的数据有可能是Netty服务器或手机终端发送的,WebSocket Serve接收到数据后根据数据的格式进行判断,根据不同的要求往不同的目标发

11、送,都由client.session.getBasicRemote().sendText(msg)完成,WebSocket服务器在推送和控制的过程中充当了一个重要的转接角色。3 Android客户端设计3.1 Service组件在Android中使用Service服务组件作为通信服务层的组件。Service服务运行于应用程序的后台,适合运行长期执行的操作。为了实现消息的及时接收,需要将WebSocket通信模块放在后台服务中运行,这样当应用程序被置于屏幕后台运行时(如此时打开了其他应用程序),仍然能在后台接收到服务器发送的消息并通知用户处理【4】。Android客户端设计的通信服务组件Comm

12、unicationService继承自Android系统的Service组件,并重写它的OnBind,OnCreate,OnStart和OnDestroy等方法。(1)OnBind:将当前服务器实例返回给绑定服务的组件,如Application。(2)OnCreate:读取应用程序上下文,并广播消息告知服务已经启动。(3)OnStart:判断客户端是否通过身份认证,若是,则在尚未连接的条件下与通信服务器进行连接,此处使用WebSocket客户端对象来与系统通信服务器建立连接,实现消息的发送和接收,在WebSocketClient.Handler实例中重写onMessage方法以实现对接收到的消

13、息进行处理。当WebSocket客户端接收到来自服务器的消息时,首先通过消息模型MessageModel的parse方法将文本消息转换为消息对象,并根据消息类型调用消息处理模块MessageHandle的对应方法对消息进行进一步处理,同时传入OnMessageListener接口,将消息模型传递给UI层进行必要的处理。(4)OnDestroy:关闭与通信服务器的链接,释放资源。3.2 Android客户端效果图Android客户端设计效果图如图3所示。4 结 语本平台使用Netty+WebSocket技术解决了移动设备与后台服务器双向通讯的问题,后台可以随时向用户推送消息,以保证前后台状态统一

14、,在传统的HTTP协议中,这是很难实现的,下一步工作将在数据格式上进行进一步细化和分类,将分类和实时推送做到最优。参考文献【1】鲍晓.基于Android平台的新闻资讯阅读软件的设计与实现.计算机应用,2013,33(S2):279-282,289.【2】李杨.新华08;手机版采用的PUSH技术.中国传媒科技,2008(7):25-26.【3】初雅莉,陈昌稳,崔召金,等.基于Android的智慧校园手机系统.微型机与应用,2013,32(15):15-17.【4】梁彩虹,刘爽.基于Android平台实现实时地点通讯及导航.电子设计工程,2013,21(22):40-42.【5】张一平.智能小区管理系统的设计与开发.武汉:武汉理工大学,2010.【6】郭宏昌.基于Android手机的实时公交查询系统设计与实现.物联网技术,2015,5(11):94-95.【7】齐华,李佳,刘军.基于Websocket的消息实时推送设计与实现.微处理机,2016,37(3):36-39.

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!