基于AJAX、WebService和SIP协议的异步通信机制研究

时间:2022-06-19 06:31:37

基于AJAX、WebService和SIP协议的异步通信机制研究

摘 要:HTTP协议是一种无状态的通讯协议,适用于一次性的同步传输。但许多应用场景(如Web聊天室、Web Phone)需要使用持续性的同步传输,针对此问题,采用AJAX技术搭配SIP协议,让客户端与服务器维持一定的持续性作用状态,而服务器端程序则采用异步呼叫技术,呼叫以SIP协议为基础构建的Web Service,如此处理可以大幅提升服务器端程序对用户的响应速度,并提升网站负载能力。

关键词:互联网 异步通信 信息安全

中图分类号:TP311 文献标识码:A 文章编号:1672-3791(2017)02(b)-0021-03

互联网飞速发展,提供的网络服务也越来越多。而在众多的网络服务中,即时通讯又成为了使用最广、影响最大、运营最成功的网络服务之一。尽管如此,网页聊天室仍有其生存空间,原因在于网页聊天室是具有主题性的,特定群体会在特定聊天室中讨论相关话题,适合陌生人之间交流,而实时通讯软件则是用以维系已有的人际关系。但在技术层面,网页聊天室无法实现实时通讯软件的主动推送(Push)机制,所有客户端都会以轮询机制和服务器进行通信,网站主机收到轮询的请求会推送整个网页到客户端,导致网站服务器负载过重,且客户端将因为网站负载过大,响应速度变慢而产生信息传递停滞现象。基于AJAX、Web Service和SIP协议建立Web接口的端对端异步通信机制可以解决此类问题。

1 相关理论与技术

通过采用AJAX及SIP通讯协议,设计一个Web Service并以Web为接口的端对端异步通信实例,阐释Web Service双向通讯的建构方式,同时对AJAX技术、SIP通讯协议的原理与应用作简要介绍。

1.1 Web Service双向通信机制

如图1所示[1],建立Client/Server双向通信的松散连接及紧密连接架构,Web Service双向通信包含了一个Client的主动请求和一个Server端的前项式Push或事件通知。这是从服务互动的观点来设计的,最少会包含这3种型态,而每一个端点都像这样具备Client与Server的功能设计。

(1)TYPE I是一个常见的单向Web Service交互式样板;Rc:表示Client端初始化一个请求,这个请求可以接收响应或是不需要响应。

(2)TYPE II是一个Server to Client的异步Reply与Event Notification的交互式样板,实际上异步Reply常被塑造成Event Notification的模式,有ACK就响应,否则就是Notification;Es:表示Server的事件通知,可以要求具有ACK的响应,也可以是一个事件通知。

(3)TYPE III与TYPE I相反;Rs:表示Server端初始化一个请求,这个请求可以接收响应或是不需要响应。

图1中实心的箭头是初始化请求,虚线则是选择性的信息响应,TYPE I Server必须提供适当的WSDL,通过SOAP传递给Client来使用,TYPE II 和TYPE III在Client必须提供适当的WSDL,通过SOAP传递给Server来使用,而Web Service人需同时具备TYPEI~TYPEIII的行为能力,在一个Web Service的端点中同时存在Client/Server的角色时就会出现状态协调性的问题,如果协调性出现问题就会出现错误,传统WSDL是One-way方式,要实现Web Service双向通信就要做动态的设计。

1.2 AJAX技术

AJAX的全名为Asynchronous JavaScript and XML,是JavaScript及XML等技术的结合体,另外AJAX也包含浏览器端如何呼叫服务器端Web Service的HTTP Request技术[3]。从AJAX全名的字义中可以了解,AJAX就是异步的JavaScript与XML,它突破了传统网页开发技术的限制,使得网页更具互动性。

1.3 SIP通讯协议的原理与应用

SIP是一个应用层的控制通讯协议,可以建立、修改或结束多媒体联机[4]。以OSI定义的网络七层来分类,SIP应该属于会话层,但是也有人将其归类在广义的应用层。

SIP目前共定义九大逻辑组件[5],因该文仅使用到Proxy Server这个组件,利用该组件的原理,将该组件的部分功能设计成Web Service。Proxy Server是一个中介组件,同时具有Server 与Client的双重角色,相当于H.323中的Gatekeeper,通常SIP User Agent发出请求时并不知道对方的地址,需要Proxy Server从中协助,当Proxy Server无法取得SIP User Agent所要求的联机对象的地址时,Proxy Server会通过预设的路由选择方式转送给其他Proxy Server代为解析,此时转送请求的Proxy Server便会成为Client端。如图2所示,以INVITE为例,假设Smith要用SIP Phone 与John通话,首先Smith与John的SIP Phone要先分别向各自的SIP Proxy注册,接着Smtih的SIP Phone发出 INVITE Request,其中INVITE Request中会有几个标头字段:Via、To、From、Call-ID、CSeq、Contact、Max-Forward、Content-Type、Content-Length。因为Smith的SIP Phone并不知道John的地址或是John所注册的SIP Proxy地址,Smith会将INVITE Request送到自己所注册的SIP Proxy(Smith’s Proxy),Smith’s Proxy会回传100(Trying)给Smith的SIP Phone,100 (Trying)表示Proxy已经收到并处理INVITE Request,而Smith’s Proxy会根据IP或是域名找到John的SIP Phone所注册的Proxy,在把INVITE Request传送出去之前,Smith’s Proxy会先将自己的地址填在Via字段,加到INVITE Request 的标头,然后送到John的SIP Phone所注册的Proxy (John’s Proxy),而John’s Proxy则会在收到INVITE 讯息后回传100(Trying)给Smith’s Proxy,表示已经收到并处理INVITE Request,此时John’s Proxy会查询数据库,找到John目前所在的IP 地址,之后John’s Proxy会将自己的地址填在Via 字段,加到INVITE Request的标头并将INVITE Request传送给John的SIP phone。在收到INVITE 信息后,John的SIP Phone 会进入Ringing的状态,并依照先前所纪录的Via字段,依照路径回传180(Ringing)讯息给Smith的SIP Phone并告知John有来电。当Smith的SIP Phone收到180 (Ringing)信息后,可以显示某些信息并等待John接起电话,若John接起电话,表示John允许建立联机,John的SIP Phone响应200(OK)信息给Smith的SIP Phone,而200(OK)的讯息中,可以携带John希望建立RTP 封包联机的相关信息和参数(IP 地址与Port)的SDP给Smith,其中SDP是附加在SIP Message后面。此时Smith的SIP Phone因应200(OK)的信息响应ACK 给John的SIP Phone,两端SIP联机就算是建立完成,此时便可以利用之前Message所y带的SDP里的相关参数,开始传输RTP 封包。若John拒绝受话,则John的SIP Phone就会传送一个CANCEL讯息给Smith的SIP Phone。

2 结语

过去在浏览器上运行需要单向、双向,全双工、半双工的服务(如聊天室、语音通话、视讯等)都存在一些问题,网页聊天室采用共通的Session或全局变量来达成信号沟通的目的,而浏览器也会定时PostBack,造成Client端浏览器换页的动作产生,也会存在一些Session中断或是无法清除的问题,对于实时的讯号交换是一个瓶颈,许多运行顺畅的语音或视讯软件,都是以Active X或是Applet的组件嵌入方式安装在Client端浏览器中,运用了AJAX的方式呼叫CallBack机制后,寻找可用的Web Service,结合SIP通信协议,让信息或软件可以快速地组合出新的服务,也可以达到信号实时交换的需求,另外提供了一种快速开发以浏览器为用户端软件系统的新方式,而Client浏览器不再需要一直进行更新网页的动作,也不需要嵌入任何组件,这对目前很多使用者因嵌入不明组件造成中毒或是黑客入侵,有实质上的帮助,提高信息安全的防护。

参考文献

[1] Zhensheng Wu.A Way of Using Web Service by AJAX[C]//Proceedings of 2008 International Symposium on Distributed Computing and Applications for Business Engineering and Science.2005.

[2] Wu Chou,Feng Liu.Web Service for Tele-Communication[C]//Proceedings of the Advanced International Conference on Telecommunications and International Conference on Internet and Web Applications and Services.2006.

[3] 谢延红,钱爱增.利用Ajax技术开发无刷新聊天室系统[J].长春师范学院学报,2007,26(6):86-89.

[4] 施昌伟.基于SIP协议的即时通讯系统的研究与实现[D].南京邮电大学,2012.

[5] 张晨光.基于H.323协议的IP呼叫中心坐席K端设计与实现[D].北京邮电大学,2008.

上一篇:上市公司股份支付对管理层激励的SWOT分析 下一篇:浅论建筑企业人事管理存在问题及措施