CN101291335B - 一种基于浏览器获取服务器动态数据的方法及装置 - Google Patents
一种基于浏览器获取服务器动态数据的方法及装置 Download PDFInfo
- Publication number
- CN101291335B CN101291335B CN2008101269077A CN200810126907A CN101291335B CN 101291335 B CN101291335 B CN 101291335B CN 2008101269077 A CN2008101269077 A CN 2008101269077A CN 200810126907 A CN200810126907 A CN 200810126907A CN 101291335 B CN101291335 B CN 101291335B
- Authority
- CN
- China
- Prior art keywords
- browser
- server
- port
- dynamic data
- address
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Computer And Data Communications (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明公开一种基于浏览器获取服务器动态数据的方法,包括:浏览器创建回调对象,并打开一个端口;服务器有事件需要通知浏览器时,通过所述端口发送与事件相关的动态数据给回调对象;回调对象再调用JavaScript回调函数处理收到的动态数据。本发明还提出一种基于浏览器获取服务器动态数据的装置,该装置包括浏览器和服务器,其中,浏览器主要用于创建回调对象并打开端口,以及处理服务器发送的与事件相关的动态数据。采用本发明提出的基于浏览器获取服务器动态数据的方法及装置,服务器与浏览器之间不用一直保持连接状态,所以,能够有效地提高获取服务器动态数据的效率、保证服务器的并发连接数。
Description
技术领域
本发明具体涉及一种基于浏览器获取服务器动态数据的方法及装置。
背景技术
使用异步JavaScript和XML(AJAX)开发出的基于浏览器的、具有高用户交互性的、几乎不易觉察到延迟的web应用,能够很好地满足消息传输时间不确定的web应用,如基于网页的文字聊天应用的需求。
由于实时的动态数据比如新闻标题、证券报价和拍卖行情都需要尽快地发送给用户,但是,AJAX因受限于HTTP协议请求/响应架构,所以,服务器不能推送实时动态的数据。
目前,已知的基于浏览器获取服务器动态数据的方法有HTTP拉取方法、HTTP流方法、反转AJAX方法和长时间轮询方法,其中,在HTTP拉取方法中,浏览器以可以由用户定义的时间间隔检查服务器上的最新动态数据;在HTTP流方法中,HTTP流由存在于不间断的HTTP连接响应中或某个XMLHttpRequest连接中的服务器动态数据流组成,在这个连续的流中定时发送服务器的动态数据给浏览器;在反转AJAX方法中,根据HTTP的持续连接特性,,除非服务器或浏览器的某一方发送了一条明显的关闭连接的消息,或者有超时以及网络错误发生,否则,服务器和浏览器之间的传输控制协议(TCP)会一直保持连接状态,服务器有事件要通知浏览器时,可以随时通过此连接发送与事件相关的动态数据;长时间轮询方法,也就是所谓的异步轮询,浏览器和服务器间的连接会保持打开状态,并保持一段预定义好的时间,如果预定义时间超时且服务器没有事件发生,服务器就会请求浏览器重新进行异步连接,如果预定义时间内有事件发生,服务器会发送动态数据到浏览器,然后由浏览器重新进行连接。
上述现有基于浏览器获取服务器动态数据的方法中,HTTP拉取方法的拉取频率要足够高才能保证较高的动态数据精确度,但是,高频率可能会导致多余的检查,从而导致较高的网络流量,而低频率则会导致错过更新的动态数据。理想地,拉取的时间间隔应该等于服务器状态改变的速度,但实际上很多应用无法满足这个要求。HTTP流方法、反转AJAX方法和长时间轮询方法的本质都差不多,都是利用HTTP的连接保持这一特性,虽然,服务器与浏览器间保持长连接可以及时传送动态数据,但是,服务器与浏览器间保持长连接会造成系统资源浪费,即降低服务器的并发连接数。
发明内容
有鉴于此,本发明的主要目的在于提供一种基于浏览器获取服务器动态数据的方法及装置,能够有效地提高获取服务器动态数据的效率、保证服务器的并发连接数。
为达到上述目的,本发明的技术方案是这样实现的:
一种基于浏览器获取服务器动态数据的方法,该方法包括:
a、浏览器创建回调对象,并判断浏览器所属客户机的IP地址是否为公网地址,如果是,执行步骤d;否则,执行步骤b;
b、判断服务器的IP地址是否为公网地址,如果是,执行步骤c;否则,执行步骤d;
c、判断网关是否支持通用即插即用设备UPnP,如果是,执行步骤d;否则,创建端口失败,结束当前流程;
d、浏览器打开一个端口,服务器有事件需要通知浏览器时,通过所述端口发送与所述事件相关的动态数据给回调对象,再由回调对象处理收到的动态数据,
步骤d所述浏览器打开一个端口之后包含步骤:浏览器将所述端口的端口号发送给服务器,服务器保存端口号后,向浏览器返回保存成功消息;所述通过端口发送为:服务器查找浏览器所对应的端口号,建立与所述端口号对应端口的连接后,通过所述端口发送与所述事件相关的动态数据给回调对象。
步骤a所述浏览器创建回调对象为:
a1、浏览器向服务器请求异步JavaScript和XMLAJAX页面;
a2、服务器向浏览器返回携带JavaScript代码的AJAX页面;
a3、浏览器通过执行JavaScript代码创建回调对象。
所述回调对象的创建参数中包含JavaScript回调函数名;步骤d所述回调对象处理收到的动态数据为:回调对象根据所述JavaScript回调函数名调用JavaScript回调函数处理动态数据。
所述浏览器所属客户机的IP地址为公网地址;所述端口号为客户机本机的端口号。
所述服务器的IP地址为公网地址、浏览器所属客户机的IP地址为私网地址、且网关支持通用即插即用设备UPnP;所述端口号为网关映射的端口号。
所述客户机和服务器的IP地址都是私网地址;所述端口号为客户机本机的端口号。
所述端口为传输控制协议TCP端口或管理用户数据报协议UDP端口。
回调对象处理收到的动态数据为:回调对象获得浏览器容器的句柄;根据所述浏览器容器的句柄调用浏览器容器的获取文档接口;从文档接口中获得脚本对象;调用脚本对象的Invoke方法执行JavaScript脚本函数;JavaScript函数根据动态数据所描述事件的类型作相应处理。
本发明提出的基于浏览器获取服务器动态数据的方法及装置,在浏览器访问服务器时,创建回调对象并打开一个端口,服务器有事件通知客户端时,则通过指定的端口向回调对象发送与所述事件相关的动态数据,再由回调对象调用JavaScript回调函数对收到的动态数据进行处理。采用本发明基于浏览器获取服务器动态数据的方法及装置,服务器与浏览器之间不用保持长连接,所以,能够有效地提高获取服务器动态数据的效率、保证服务器的并发连接数。
附图说明
图1为本发明基于浏览器获取服务器动态数据的方法流程图。
具体实施方式
本发明的基本思想是:在浏览器访问服务器时,创建回调对象并打开一个端口,服务器有事件通知客户端时,则通过指定的端口向回调对象发送与所述事件相关的动态数据,再由回调对象调用JavaScript回调函数对收到的动态数据进行处理。下面结合具体实施例及附图对本发明作进一步详细说明。
图1为本发明基于浏览器获取服务器动态数据的方法流程图,如图1所示,本发明基于浏览器获取服务器动态数据的方法主要包括以下步骤:
步骤101:浏览器向服务器请求AJAX页面。
这里,用户根据实际需要向服务器请求AJAX页面,即所述AJAX页面为含有特定功能的AJAX页面,如关于股票实时信息的页面。
步骤102:服务器向浏览器返回携带JavaScript代码的AJAX页面。
这里,AJAX页面中都会使用JavaScript代码,功能不同的页面,其JavaScript代码完成的功能也不同,但是,即使功能不同的页面,其JavaScfipt代码也都必需具备创建回调对象、获取回调端口的功能。
步骤103:浏览器通过执行JavaScript代码创建回调对象。
回调对象的创建参数中会包括JavaScript回调函数名,一段典型的回调对象创建代码如下:
其中,receiveServerMsg即为一个JavaScript回调函数。
步骤104:判断浏览器所属客户机的IP地址是否为公网地址,如果是,执行步骤107;否则,执行步骤105。
这里,浏览器根据客户机的IP地址可以直接确定其为公网地址或私网地址。客户机的IP地址为公网地址的情况下,无论服务器的IP地址为公网地址还是私网地址,处理流程是相同的,因为,客户机的IP地址为公网地址的情况下,如果服务器的IP地址为私网地址,则其所在的网关一般会进行一个地址/端口映射,把服务器地址/端口对应到公网地址/端口,即客户机的IP地址为公网地址、服务器的IP地址为私网地址的情况会转换为客户机的IP地址为公网地址、服务器的IP地址为公网地址的情况。
步骤105:判断服务器的IP地址是否为公网地址,如果是,执行步骤106;否则执行步骤107。
步骤106:判断网关是否支持通用即插即用设备(UPnP),如果是,执行步骤107;否则,执行步骤112,创建端口失败。
这里,回调对象可以利用UPnP发现协议查找是否有支持UPnP的网关,从而判断网关是否支持UPnP。
步骤107:浏览器打开一个端口,并将所述端口的端口号X发送给服务器。
这里,如果服务器的IP地址为公网地址、客户机的IP地址是私网地址、且网关支持UPnP,则发送给服务器的端口号X为网关映射的端口号;如果客户机的IP地址为公网地址,则发送给服务器的端口号X为客户机本机的端口号;如果客户机和服务器的IP地址都是私网地址,则发送给服务器的端口号X为客户机本机的端口号。
浏览器可以通过AJAX的XMLHttpRequest对象发送端口号给服务器。
步骤108:服务器保存端口号X,并向浏览器返回保存成功消息。
一般情况下,服务器会为每一个客户端对应一个会话对象,用于保存用户相关信息,如用户名称、是否登录、用户权限等,所以,服务器收到端口号后,也会将端口号X保存在客户端对应的会话对象中。
步骤109:服务器有事件需要通知浏览器时,获取对应的端口号X,并连接所述端口号X对应的端口。
步骤110:服务器通过步骤109所述端口发送与事件相关的动态数据给回调对象。
这里,服务器一般将事件用JavaScript对象表示法(JSon)或XML进行编码,然后再与客户机连接,并发送动态数据。
步骤111:回调对象调用JavaScript回调函数处理动态数据。
这里,回调对象根据JavaScript回调函数名调用JavaScript回调函数处理动态数据,具体可以包含以下步骤:回调对象获得浏览器容器的句柄;根据所述浏览器容器的句柄调用浏览器容器的获取文档接口;从文档接口中获得脚本对象;调用脚本对象的Invoke方法执行JavaScript脚本函数;JavaScript函数根据动态数据所描述事件的类型作相应处理。
例如,在基于网页的聊天系统中,如果回调对象收到的动态数据描述的事件是好友上下线,则作相应处理为:浏览器更新好友状态;如果回调对象收到的动态数据描述的事件是好友发送了新消息,则作相应处理为:显示新消息;如果回调对象收到的动态数据描述的事件是请求事件,则作相应处理为:提示用户是否接受请求。
步骤112:创建端口失败。
本发明适用于客户机的IP地址为公网地址,或者客户机和服务器的IP地址均为私网地址,或者客户机的IP地址为私网地址、服务器的IP地址为公网地址、且网关支持UPnP的情况,即本发明不适用于客户机的IP地址为私网地址、服务器的IP地址为公网地址、且网关不支持UPnP的情况,这种情况下,也可以选择传统的定时轮询等方式获取服务器动态数据。
本发明基于浏览器获取服务器动态数据的装置包括浏览器和服务器,其中,
浏览器用于向服务器请求AJAX页面;通过执行服务器返回的AJAX页面所携带JavaScript代码创建回调对象并打开端口;将所述端口的端口号上报服务器;以及处理服务器发送的与事件相关的动态数据;
服务器用于向浏览器提供携带JavaScript代码的AJAX页面;存储浏览器上报的端口号;有事件通知浏览器时,通过浏览器指定的端口发送与事件相关的动态数据给浏览器。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
Claims (8)
1.一种基于浏览器获取服务器动态数据的方法,其特征在于,该方法包括:
a、浏览器创建回调对象,并判断浏览器所属客户机的IP地址是否为公网地址,如果是,执行步骤d;否则,执行步骤b;
b、判断服务器的IP地址是否为公网地址,如果是,执行步骤c;否则,执行步骤d;
c、判断网关是否支持通用即插即用设备UPnP,如果是,执行步骤d;否则,创建端口失败,结束当前流程;
d、浏览器打开一个端口,服务器有事件需要通知浏览器时,通过所述端口发送与所述事件相关的动态数据给回调对象,再由回调对象处理收到的动态数据,
步骤d所述浏览器打开一个端口之后包含步骤:浏览器将所述端口的端口号发送给服务器,服务器保存端口号后,向浏览器返回保存成功消息;所述通过端口发送为:服务器查找浏览器所对应的端口号,建立与所述端口号对应端口的连接后,通过所述端口发送与所述事件相关的动态数据给回调对象。
2.根据权利要求1所述的方法,其特征在于,步骤a所述浏览器创建回调对象为:
a1、浏览器向服务器请求异步JavaScript和XML AJAX页面;
a2、服务器向浏览器返回携带JavaScript代码的AJAX页面;
a3、浏览器通过执行JavaScript代码创建回调对象。
3.根据权利要求1所述的方法,其特征在于,所述回调对象的创建参数中包含JavaScript回调函数名;步骤d所述回调对象处理收到的动态数据为:回调对象根据所述JavaScript回调函数名调用JavaScript回调函数处理动态数据。
4.根据权利要求1所述的方法,其特征在于,所述浏览器所属客户机的IP地址为公网地址;所述端口号为客户机本机的端口号。
5.根据权利要求1所述的方法,其特征在于,所述服务器的IP地址为公网地址、浏览器所属客户机的IP地址为私网地址、且网关支持通用即插即用设备UPnP;所述端口号为网关映射的端口号。
6.根据权利要求1所述的方法,其特征在于,所述客户机和服务器的IP地址都是私网地址;所述端口号为客户机本机的端口号。
7.根据权利要求1至6任一所述的方法,其特征在于,所述端口为传输控制协议TCP端口或管理用户数据报协议UDP端口。
8.根据权利要求1或3所述的方法,其特征在于,回调对象处理收到的动态数据为:回调对象获得浏览器容器的句柄;根据所述浏览器容器的句柄调用浏览器容器的获取文档接口;从文档接口中获得脚本对象;调用脚本对象的Invoke方法执行JavaScript脚本函数;JavaScript函数根据动态数据所描述事件的类型作相应处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008101269077A CN101291335B (zh) | 2008-06-13 | 2008-06-13 | 一种基于浏览器获取服务器动态数据的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008101269077A CN101291335B (zh) | 2008-06-13 | 2008-06-13 | 一种基于浏览器获取服务器动态数据的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101291335A CN101291335A (zh) | 2008-10-22 |
CN101291335B true CN101291335B (zh) | 2011-05-11 |
Family
ID=40035408
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008101269077A Active CN101291335B (zh) | 2008-06-13 | 2008-06-13 | 一种基于浏览器获取服务器动态数据的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101291335B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106326019A (zh) * | 2016-08-19 | 2017-01-11 | 广州视睿电子科技有限公司 | Ppt状态通知方法和系统 |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101917407B (zh) * | 2010-07-26 | 2014-12-10 | 河南万里运业有限责任公司 | 根据鼠标位置减少网络流量的方法 |
CN101969469B (zh) | 2010-10-25 | 2013-11-06 | 华为技术有限公司 | 电信能力开放中的回调处理方法及装置 |
CN102932390B (zh) * | 2011-08-11 | 2015-07-08 | 阿里巴巴集团控股有限公司 | 一种网络请求的处理方法和系统、网络服务提供装置 |
CN102843604B (zh) * | 2012-09-07 | 2015-05-06 | 深圳市九洲电器有限公司 | 一种高效访问主题门户的方法及系统 |
CN103402243B (zh) * | 2013-07-16 | 2016-04-27 | 广东欧珀移动通信有限公司 | 一种调整移动终端上的应用的数据更新频率的方法和装置 |
CN103780603B (zh) * | 2013-12-31 | 2016-10-19 | 电子科技大学 | 应用内轻量级推送方法 |
CN105897790A (zh) * | 2014-11-19 | 2016-08-24 | 吴沉立 | 一种基于web的反向数据交互方法 |
CN105553871A (zh) * | 2015-12-15 | 2016-05-04 | 厦门贝启科技有限公司 | 一种远程管理设备参数的方法及系统 |
CN106294658B (zh) * | 2016-08-04 | 2020-09-04 | 腾讯科技(深圳)有限公司 | 网页快速展示方法和装置 |
CN106294777A (zh) * | 2016-08-12 | 2017-01-04 | 福建天晴数码有限公司 | 浏览器脚本的缓存方法及系统 |
CN106130748B (zh) * | 2016-08-30 | 2019-05-10 | 山东鲁能智能技术有限公司 | 基于网络的多机多网分布式服务模块状态检测方法及系统 |
CN108021614A (zh) * | 2017-08-18 | 2018-05-11 | 口碑(上海)信息技术有限公司 | 一种用于页面动态加载的方法及系统 |
CN110851208A (zh) * | 2019-11-08 | 2020-02-28 | 京东数字科技控股有限公司 | 接口参数和响应数据修改方法及装置 |
CN113709252B (zh) * | 2021-09-01 | 2022-06-21 | 东南大学 | 基于网页嵌入式脚本代码的在线内部网络环境扫描方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2004025420A2 (en) * | 2002-09-13 | 2004-03-25 | Yahoo! Inc. | Improved browser user interface |
US20050005276A1 (en) * | 2003-07-02 | 2005-01-06 | International Business Machines Corporation | Method, apparatus, and program for code reusability and maintainability in XML-driven projects |
CN1735015A (zh) * | 2004-08-03 | 2006-02-15 | 中兴通讯股份有限公司 | Java实现web服务器主动发起向浏览器发送数据的方法 |
CN1921484A (zh) * | 2006-09-14 | 2007-02-28 | 南京中兴软创软件有限公司 | 一种基于浏览器的客户端/服务器架构 |
-
2008
- 2008-06-13 CN CN2008101269077A patent/CN101291335B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2004025420A2 (en) * | 2002-09-13 | 2004-03-25 | Yahoo! Inc. | Improved browser user interface |
US20050005276A1 (en) * | 2003-07-02 | 2005-01-06 | International Business Machines Corporation | Method, apparatus, and program for code reusability and maintainability in XML-driven projects |
CN1735015A (zh) * | 2004-08-03 | 2006-02-15 | 中兴通讯股份有限公司 | Java实现web服务器主动发起向浏览器发送数据的方法 |
CN1921484A (zh) * | 2006-09-14 | 2007-02-28 | 南京中兴软创软件有限公司 | 一种基于浏览器的客户端/服务器架构 |
Non-Patent Citations (1)
Title |
---|
徐驰.Ajax模式在异步交互Web环境中的应用.《计算机技术与发展》.2006,第16卷(第11期),正文229页第1.3节,第230页第2.3节. * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106326019A (zh) * | 2016-08-19 | 2017-01-11 | 广州视睿电子科技有限公司 | Ppt状态通知方法和系统 |
CN106326019B (zh) * | 2016-08-19 | 2019-09-03 | 广州视睿电子科技有限公司 | Ppt状态通知方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN101291335A (zh) | 2008-10-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101291335B (zh) | 一种基于浏览器获取服务器动态数据的方法及装置 | |
CN103580986B (zh) | 一种实时通信方法、终端设备、实时通信服务器及系统 | |
CN102413436B (zh) | 信息传送方法和系统 | |
CN1716964B (zh) | 维持会话连接 | |
US9967347B2 (en) | Home hub for IP multimedia subsystem (IMS) web services interaction | |
KR100728280B1 (ko) | Sip를 이용한 통신 시스템에서 호 해제 요청/응답메시지를 이용한 네트워크 상태 관리 방법 | |
CN101594320B (zh) | 一种基于snmp协议的消息交互方法 | |
CN103107983B (zh) | 网络系统的数据管理方法及其相关系统 | |
CN101309233B (zh) | 实现即时通讯tcp连接复用的方法 | |
JP2009512016A5 (zh) | ||
CN103702062A (zh) | 一种音视频通讯方法、装置及系统 | |
JP2008130082A (ja) | インターネットを通じてUPnPホームネットワークに接続されたデバイスを制御する方法及びそのためのシステム及び装置 | |
CN103001860A (zh) | 一种融合通信Web即时消息实现系统 | |
CN101960822A (zh) | Sip-http应用相关器 | |
CN102932364B (zh) | 一种注册方法、装置及系统 | |
WO2009053646A8 (fr) | Procédé de traversée d'équipement de traduction d'adresses pour messages de signalisation sip par utilisation temporaire du protocole de transport tcp | |
CN101873359B (zh) | 实现udp打洞的方法 | |
CN101197724A (zh) | 基于IPv6的IGRS家庭网络中信息家电的远程控制系统和方法 | |
CN101997858B (zh) | 用户驻地设备广域网管理协议cwmp会话交互方法及装置 | |
CN102801701A (zh) | 一种sip网络与用户应用网络的应用相关器 | |
Kodali et al. | Implementation of home automation using coap | |
CN109586940A (zh) | 一种手持机及远程维护方法 | |
JP6277458B1 (ja) | Urlを用いたチャットのコネクション確立方法、サーバ及びプログラム | |
KR101784859B1 (ko) | 고객관계관리 기반 서비스를 제공할 수 있는 단말기 및 그를 포함하는 시스템 | |
CN102118378A (zh) | 3c协同设备、通信系统和通信方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |