APP下载

WebSocket服务器推送技术的研究

2014-07-09张翠肖

河北省科学院学报 2014年2期
关键词:服务器端插件浏览器

张 玲,张翠肖

(石家庄铁道大学 信息科学与技术学院,河北 石家庄 050043)

随着Internet技术的不断发展,基于HTTP协议的Web应用成为人们从互联网上获取大量信息的主要途径。传统基于HTTP协议的Web应用采用的是“请求—应答”模式,以客户端发出请求,服务器端响应请求的方式工作。而HTTP协议是无状态的,客户端向服务器端发送一次请求就建立一次TCP连接,即客户端向服务器端发送请求,服务器端处理客户端发送的请求并做出响应,此时TCP连接断开。当用户需要获取新的数据时,必须重新建立TCP连接,因此无法将最新的消息及时的传送给客户端[1]。现如今对Web应用中数据的实时性要求越来越高,能够及时的获取最新消息的服务器推送技术就显得越来越重要。传统的基于HTTP协议的Web应用不能满足客户的需求,HTML5标准中提出的WebSocket通信协议提供了一条客户端与服务器端的基于TCP的双向通道,可同时在客户端与服务器端传送数据,使建立的实时Web应用更高效[2]。

1 服务器推送技术

1.1 服务器推送技术概述

服务器推送技术的基本思想是在客户端与服务器端建立长连接,服务器端主动将更新的数据及时的发送到客户端,而不需要客户端发送请求。

1.2 现有服务器推送技术

1.2.1 HTML refresh

最简单的方法就是HTML refresh,即刷新。原理是不管服务器端的数据是否有更新,客户端都不停的向服务端发送请求,当服务器端数据发生变化时就可以及时的传送到客户端。该方法利用HTML中的<meta>标签,设置文件的自动刷新频率[1]。例如<META HTTP-EQUIV=“Refresh”CONTENT=“3;URL=http://www.baidu.com”>,意思是每隔3s刷新一次百度页面。

1.2.2 基于插件的服务器推送技术

基于插件的服务器推送技术可利用的浏览器插件有ActiveX、Applet和Flash[1]。推送原理是在客户端浏览器安装插件,插件在浏览器页面打开的同时被初始化,并与服务器端建立TCP连接,使用套接口传送数据信息或是使用MRI、CORBA进行远程调用,来实现服务器端向客户端主动的发送数据。

1.2.3 无插件的服务器推送技术

无插件服务器推送技术的原理是在HTTP的头信息中添加Connection属性,设置Connection的属性值为Keep-Alive,建立客户端与服务器端的长连接,服务器会主动的将最新的数据及时发送给客户端而不需要客户端向服务器端发送请求[3,4]。例如轮询、长轮询、Comet。

由上述可知,刷新虽然可以自动发送请求但刷新的是整个页面,而我们需要的只是部分数据,重复的刷新整个页面会造成资源的浪费;使用有插件的服务器推送技术,浏览器必须先安装插件,这样操作系统和插件的兼容性不同会给用户带来很大麻烦;无插件的服务器推送技术,需要服务器与浏览器建立长连接,当有大量的用户与服务器建立长连接,服务器就丧失了高并发性[1,3,4]。现在出现一种基于 WebSocket协议的服务器推送技术可以使服务器端与客户端建立双向通信,解决上述问题。

2 HTML5中的WebSocket协议

WebSocket是HTML5定义的一个非常重要的新特性,目的是解决客户与服务器间的实时通信,有Web TCP之称[5]。它通过单一的Socket套接字在客户端浏览器和服务器端建立全双工的通信连接,该连接可以及时的将最新数据推送到客户端,并且直到明确关闭之前一直保持打开状态。使用户能够仅仅通过网页就可以实现很多以前必须安装客户端才能实现的功能,例如在线聊天应用。

WebSocket连接是通过将客户端与服务器端之间第一次握手时的HTTP协议升级到WebSocket协议,但是其底层使用的还是TCP/IP连接。连接建立后使用标准HTTP的80或443端口进行通信,其参数格式是“ws://localhost:80/zza/Chat”,ws使用80端口是普通的WebSocket通信协议,还有这一种wss是安全的 WebSocket通信协议使用443端口[2,5]。其本质是通过HTTP协议进行握手升级到WebSocket协议后创建TCP连接,此后服务器端与客户端通过此TCP连接进行实时数据传输。因此,不需要安装新的硬件或者要求开放新的端口,只要服务器端和客户端都能解析 WebSocket协议,就可以顺利地建立WebSocket连接。

3 服务器推送模型设计

3.1 实时Web应用架构设计

如今HTML5得到了很多浏览器的支持,例如Firefox、Chrome、Maxthon以及基于IE推出的360浏览器、搜狗浏览器等。为提高实时 Web系统的实时数据处理能力和实时响应能力,在实时 Web系统架构设计中使用了 WebSocket协议的服务器推送技术,利用了复杂事件处理技术对数据进行快速处理[6,7]。基于WebSocket协议系统架构模型如图1所示。

图1 基于WebSocket协议系统架构模型

3.2 用户代理模块

用户代理有两种形式,一种是当用户浏览网页时,用户代理获取用户的浏览信息,根据用户浏览信息发现用户感兴趣的信息,建立用户兴趣模型;另一种是根据用户提交的订阅信息,建立用户兴趣。

3.3 数据转换模块

当Internet网络中各种信息以数据流的形式传输到服务器端时,数据流首先经过数据转换模块转换为事件处理模块能够识别的事件流,然后数据以事件流的形式输出到事件处理模块。

3.4 事件处理模块

对事件的处理采用了复杂事件处理技术。其基本原理是首先从事件流中提取原子事件;然后根据已经设置的规则,去除不需要的事件,其次将低层次的事件聚合成高层次的事件,并将局部事件组合成整体事件;然后对原子事件或整体事件进行匹配、判断和推理,从而获取事件之间的时间关系、因果关系、逻辑关系等;最后与已存储的用户兴趣数据进行对比,进而进行判断,查找,决策和预测等功能[8,9,10]。复杂事件处理过程如图2所示。

图2 复杂事件处理过程图

首先复杂事件建模根据事件类型、逻辑关系、时序关系等,将接收的事件流进行整合,其次通过复杂事件语言描述生成复杂事件模型库,然后根据用户代理生成的用户兴趣模型与复杂事件模型库进行复杂事件检测,若不符合用户需求,则直接忽略;若符合用户需求,则形成复杂事件库,同时生成事件消息并触发数据推送模块。

3.5 数据推送模块

数据推送采用基于WebSocket协议的服务器推送技术,建立WebSocket建立,连接建立的过程与TCP建立连接的过程是类似的,都基于TCP协议[4,11]。基于 WebSocket协议的通信图如图3所示。

图3 基于WebSocket协议的通信图

WebSocket协议是服务器端和客户端浏览器之间建立一条可以进行双向通信的基于TCP连接的双向连接通道。客户端浏览器通过80或433端口向服务器端发出建立连接请求,服务器端根据HTTP header解析客户端浏览器发送来的请求,若是WebSocket请求,则升级请求建立WebSocket连接。连接成功后,客户端浏览器和服务器端就可以通过 Web-Socket连接直接进行数据交换。服务器在接收消息的同时触发推送机制将消息推送到客户端浏览器,呈现在客户面前。

4 结束语

本文通过对服务器推送技术工作原理及其各自优缺点的介绍,了解到基于WebSocket协议的服务器推送技术具有高实时性和资源占用小等优点。通过对实时Web应用架构的设计,了解到利用WebSocket协议可以设计出多种实时性强、效率高的 Web应用。Websocket作为一个正在演变中的web规范,Websocket规范和API存在变动的可能,虽然目前websocket构建应用程序可能存在一定的风险,但websocket将会成为未来开发实时Web应用的主力军。

[1]孙清国,朱玮,刘华军,张鹏.Web应用中的服务器推送技术研究综述[J].计算机系统应用,2008,11:116-120.

[2]李代立,陈榕.WebSocket在 Web实时通信领域的研究[J].电脑知识与技术,2010,28:7923-7925+7935.

[3]郑强.web服务器推送技术的设计与实现[D].北京邮电大学,2013.

[4]费日东,李定主.服务器推送技术研究[J].电脑知识与技术,2012,07:1516-1517.

[5]温照松,易仁伟,姚寒冰.基于 WebSocket的实时 Web应用解决方案[J].电脑知识与技术,2012,16:3826-3828.

[6]廖清平.基于 Web的服务器的Push技术研究和应用[D].中山大学,2013.

[7]汤玲丽.复杂事件处理引擎关键技术研究[D].哈尔滨工程大学,2012.

[8]江连峰,赵佳宝.复杂事件处理技术及其应用综述[J].软件,2014,02:188-192.

[9]方金灿.面向港口物流的物联网中间件复杂事件处理[D].大连理工大学,2013.

[10]汤新.Ceper:一个高性能复杂事件处理引擎[J].电脑与信息技术,2013,04:32-37.

[11]鄢金端,夏吉广,张爱玉.服务器推送技术在智能仓储物联网中的应用[J].警察技术,2013,02:19-22.

猜你喜欢

服务器端插件浏览器
Linux环境下基于Socket的数据传输软件设计
自编插件完善App Inventor与乐高机器人通信
反浏览器指纹追踪
浅析异步通信层的架构在ASP.NET 程序中的应用
基于Qt的安全即时通讯软件服务器端设计
基于jQUerY的自定义插件开发
环球浏览器
MapWindowGIS插件机制及应用
基于Revit MEP的插件制作探讨
网页防篡改中分布式文件同步复制系统