CN103297455B - 浏览器间的连接共享方法和装置 - Google Patents
浏览器间的连接共享方法和装置 Download PDFInfo
- Publication number
- CN103297455B CN103297455B CN201210046581.3A CN201210046581A CN103297455B CN 103297455 B CN103297455 B CN 103297455B CN 201210046581 A CN201210046581 A CN 201210046581A CN 103297455 B CN103297455 B CN 103297455B
- Authority
- CN
- China
- Prior art keywords
- entity
- multicast group
- principal
- message
- multicast
- 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
Landscapes
- Information Transfer Between Computers (AREA)
Abstract
本申请公开了一种浏览器间的连接共享方法和装置,其中,该方法包括:已打开的每个浏览器中用于执行脚本程序的实体对同一个资源标识符进行抢占,其中,抢占到资源标识符的实体为主实体,其它未抢占到资源标识符的实体为从实体;主实体与服务器进行连接;从实体共享主实体与服务器之间建立的连接来与服务器进行消息传输。本申请解决了现有技术中由于缓冲区大小限制而导致的服务器连接浏览器的数量较少、服务器的服务效率下降的问题,达到了多个浏览器之间长连接的连接共享的效果。
Description
技术领域
本申请涉及互联网通信领域,具体而言,涉及一种浏览器间的连接共享方法和装置。
背景技术
Web推送技术已经开始流行,现在有些大型的互联网公司已经开始大规模的应用这种技术,其中的代表技术有WebSocket,Flash Socket等技术,使用Web推送技术可以突破传统HTTP不能做到的TCP(Transmission Control Protocol,传输控制协议)长连接,但是同时也引入了一个新的问题,这个问题就是当一个用户打开多个浏览器的时候,会产生多个浏览器各自发起一个长连接连接到服务端的现象,而且在很多情况下,很有可能是多个浏览器看的是同一个网站的不同网页,从而服务端需要维持几倍于客户端数量的Socket数量。因此,产生了长连接的连接数的问题:当连接数太大的时候,服务端TCP的接收缓存会成几何趋势增长,当内存耗尽的时候,服务器将没有办法再接收新的连接,那么会发生服务器拒绝服务的现象,服务器提供服务的客户端数量也将只能被限制在一个较小的范围。
然而,对于上述长连接的连接数的问题,现有技术可以通过Socket的长连接共享来解决,其基本原理是找到一个对于多个浏览器之间可以共享的数据缓存区,然后,通过数据缓存区的中转来达到连接数共享的目的,上述共享的缓存区有HTML5 Web Storage,Cookie,Flash Share Object等形式,但是,由于上述共享的缓存区基本上都是基于文件***形成的,大多数不能够被不同的浏览器识别,例如,缓冲区如果使用Cookie或者WebStorage技术,则这些存储都有很强的浏览器同源策略的约束,而且实现方案都是在各个浏览器的内部,因此无法实现多个不同品牌之间的浏览器数据的共享;同时,由于缓冲区是基于文件的数据缓冲,导致访问速度会非常慢;此外,缓冲区的大小也有限制,浏览器厂商为了保护客户端本地存储的安全,对于本地存储的容量都有限制,一般都不会超过几兆。
因此,由上述场景可知,在现有的实现多个浏览器之间长连接共享的方案中,由于数据缓存区是基于文件***的形式,而存在不能识别不同品牌的服务器的问题,只能识别部分服务器,不能实现真正意义上的多个浏览器之间的连接共享,同时,存在缓存区访问速度慢、缓冲区大小有限制的问题,导致影响服务器连接浏览器的数量,降低服务器的服务效率。
发明内容
本申请提供了一种浏览器间的连接共享方法和装置,以解决相关技术中上述问题。
根据本申请的一个方面,提供了一种浏览器间的连接共享方法,该方法包括:已打开的每个浏览器中用于执行脚本程序的实体对同一个资源标识符进行抢占,其中,抢占到资源标识符的实体为主实体,其它未抢占到资源标识符的实体为从实体;主实体与服务器进行连接;从实体共享主实体与服务器之间建立的连接来与服务器进行消息传输。
优选的,从实体共享主实体与服务器之间建立的连接来与服务器进行消息传输的步骤包括:主实体接收服务器发送的消息;主实体将接收到的消息组播给与主实***于同一个组播组中的从实体。
优选的,主实体将接收到的消息组播给与主实***于同一个组播组中的从实体的步骤包括:从实体获取主实体组播的消息中的标识,其中,标识用于唯一标识从实体中的一个;从实体判断自身的标识是否与主实体组播的消息中的标识一致;若一致,则执行判断步骤的实体判断出主实体组播的消息是属于自身的,并存储消息。
优选的,在主实体与服务器进行连接之后,还包括:从实体每隔预设周期抢占资源标识符;若抢占资源标识符成功、且主实体出现异常时,则抢占到资源标识符的从实体变为新的主实体,出现异常的主实体变为从实体。
优选的,主实体通过以下步骤加入到组播组中:主实体判断是否已加入组播组;若未加入到组播组中,则主实体判断共享文件中是否存在组播组的组播组名称;若存在组播组的组播组名称,则主实体根据共享文件中存在的组播组名称加入组播组;若不存在组播组的组播组名称,则主实体创建用于唯一标识组播组的组播组名称,将创建的组播组名称写入共享文件,并根据创建的组播组名称加入组播组。
优选的,从实体通过以下步骤加入到组播组中:从实体判断是否已加入组播组;若未加入到组播组中,则从实体判断共享文件中是否存在组播组的组播组名称;若存在组播组的组播组名称,则从实体根据共享文件中存在的组播组名称加入组播组;若不存在组播组的组播组名称,则从实体根据主实体提供的获取组播组的组播组名称的方法获取组播组的组播组名称,将获取的组播组名称写入共享文件中,并根据获取的组播组名称加入组播组。
优选的,从实体共享主实体与服务器之间建立的连接来与服务器进行消息传输的步骤包括:主实体接收各个从实体根据发送消息方法发送的消息,其中,发送消息方法由主实体提供;主实体根据发送消息方法将接收的消息发送给服务器。
根据本申请的另一方面,提供了一种浏览器间的连接共享装置,该装置包括:第一判断单元,用于判断已打开的当前浏览器中用于执行脚本程序的实体是否为主实体,其中,已打开的当前浏览器中用于执行脚本程序的实体对同一个资源标识符进行抢占,抢占到资源标识符的实体为主实体,其它未抢占到资源标识符的实体为从实体;连接单元,用于在已打开的当前浏览器中的实体为主实体时,将主实体与服务器进行连接;共享单元,用于将主实体与服务器之间建立的连接共享给从实体以使从实体通过连接与服务器进行消息传输。
优选的,共享单元包括:第一接收模块,用于在已打开的当前浏览器中的实体为主实体时,接收服务器发送的消息;组播模块,用于将接收到的消息组播给与主实***于同一个组播组中的从实体。
优选的,组播模块包括:获取子模块,用于在已打开的当前浏览器中的实体为从实体时,获取主实体组播的消息中的标识,其中,标识用于唯一标识从实体中的一个;判断子模块,用于判断从实体自身的标识是否与主实体组播的消息中的标识一致,若一致,则判断出主实体组播的消息是属于自身的,并存储消息。
优选的,该装置还包括:抢占单元,用于在已打开的当前浏览器中的实体为从实体时,在主实体与服务器进行连接之后,每隔预设周期抢占资源标识符;转换单元,用于在抢占资源标识符成功、且主实体出现异常时,将抢占到资源标识符的从实体变为新的主实体,出现异常的主实体变为从实体。
优选的,该装置还包括:第二判断单元,用于在已打开的当前浏览器中的实体为主实体时,判断主实体是否已加入组播组;第三判断单元,用于在主实体未加入到组播组时,判断共享文件中是否存在组播组的组播组名称;第一加入单元,用于在第三判断单元判断共享文件中存在组播组的组播组名称时,根据共享文件中存在的组播组名称将主实体加入组播组;第一创建单元,用于在第三判断单元判断共享文件中不存在组播组的组播组名称时,创建用于唯一标识组播组的组播组名称,将创建的组播组名称写入共享文件,并根据创建的组播组名称将主实体加入组播组。
优选的,该装置还包括:第四判断单元,用于在已打开的当前浏览器中的实体为从实体时,判断从实体是否已加入组播组;第五判断单元,用于从实体未加入到组播组时,判断共享文件中是否存在组播组的组播组名称;第二加入单元,用于在第五判断单元判断共享文件中存在组播组的组播组名称时,根据共享文件中存在的组播组名称将从实体加入组播组;获取单元,用于在第五判断单元判断共享文件中不存在组播组的组播组名称时,根据主实体提供的获取组播组的组播组名称的方法获取组播组的组播组名称,将获取的组播组名称写入共享文件中,并根据获取的组播组名称将从实体加入组播组。
优选的,共享单元包括:第二接收模块,用于在已打开的当前浏览器中的实体为主实体时,接收各个从实体根据发送消息方法发送的消息,其中,发送消息方法由主实体提供;发送模块,用于根据发送消息方法将接收的消息发送给服务器。
在本申请中,当用户打开多个浏览器时,每个浏览器中用于执行脚本程序的实体会去竞争抢占资源标识符,其中,抢占到资源标识符的实体作为主实体,该主实体就成为发送和接收消息的主体,其它没有抢占到资源标识符的实体作为从实体,从实体与主实体进行消息传递。这样所有的实体都会共享这个连接发送和接收消息,解决了现有技术中由于缓冲区大小限制而导致的服务器连接浏览器的数量较少、服务器的服务效率下降的问题,达到了多个浏览器之间长连接的连接共享的效果。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本申请实施例的浏览器间的连接共享***的一种优选的结构示意图;
图2是根据本申请实施例的浏览器间的连接共享方法的一种优选的流程图;
图3是根据本申请实施例的浏览器间的连接共享装置的一种优选的结构示意图;
图4是根据本申请实施例的浏览器间的连接共享装置的另一种优选的结构示意图;
图5是根据本申请实施例的浏览器间的连接共享装置的另一种优选的结构示意图;
图6是根据本申请实施例的浏览器间的连接共享装置的另一种优选的结构示意图;
图7是根据本申请实施例的浏览器间的连接共享装置的另一种优选的结构示意图;
图8是根据本申请实施例的浏览器间的连接共享装置的另一种优选的结构示意图;
图9是根据本申请实施例的浏览器间的连接共享装置的又一种优选的结构示意图;
图10是根据本申请实施例的浏览器间的连接共享装置的工作方式的一种优选的示意图;
图11是根据本申请实施例的浏览器间的连接共享装置中抢占资源标识符的一种优选的示意图;
图12是根据本申请实施例的浏览器间的连接共享装置中实体加入组播组的一种优选的示意图;
图13是根据本申请实施例的浏览器间的连接共享装置中消息传递的一种优选的示意图。
具体实施方式
下文中将参考附图并结合实施例来详细说明本申请。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
在描述本申请的各实施例的进一步细节之前,将参考图1来描述可用于实现本申请的原理的一个合适的计算体系结构。在以下描述中,除非另外指明,否则将参考由一个或多个计算机执行的动作和操作的符号表示来描述本申请的各实施例。由此,可以理解,有时被称为计算机执行的这类动作和操作包括计算机的处理单元对以结构化形式表示数据的电信号的操纵。这一操纵转换了数据或在计算机的存储器***中的位置上维护它,这以本领域的技术人员都理解的方式重配置或改变了计算机的操作。维护数据的数据结构是具有数据的格式所定义的特定属性的存储器的物理位置。然而,尽管在上述上下文中描述本申请,但它并不意味着限制性的,如本领域的技术人员所理解的,后文所描述的动作和操作的各方面也可用硬件来实现。
转向附图,其中相同的参考标号指代相同的元素,本申请的原理被示为在一个合适的计算环境中实现。以下描述基于的本申请的实施例,并且不应认为是关于此处未明确描述的替换实施例而限制本申请。
图1示出了可用于这些设备的一个示例计算机体系结构的示意图。出于描述的目的,所绘的体系结构仅为合适环境的一个示例,并非对本申请的使用范围或功能提出任何局限。也不应将该计算***解释为对图1所示的任一组件或其组合具有任何依赖或需求。
本申请的原理可以使用其它通用或专用计算或通信环境或配置来操作。适用于本申请的众所周知的计算***、环境和配置的示例包括但不限于,个人计算机、服务器,多处理器***、基于微处理的***、小型机、大型计算机、以及包括任一上述***或设备的分布式计算环境。
在其最基本的配置中,图1中的浏览器间的连接共享***100至少包括:一个网站的服务器102以及一个或多个客户端104。服务器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置、用于存储数据的存储装置以及与客户端通信的传输装置;客户端104可以包括:微处理器MCU、与服务器通信的传输装置、与用户交互的显示装置。在本说明书和权利要求书中,“浏览器间的连接共享***”也可以被定义为能够执行软件、固件或微码来实现功能的任何硬件组件或硬件组件的组合。浏览器间的连接共享***100甚至可以是分布式的,以实现分布式功能。
如本申请所使用的,术语“模块”、“组件”或“单元”可以指在浏览器间的连接共享***100上执行的软件对象或例程。此处所描述的不同组件、模块、单元、引擎和服务可被实现为在浏览器间的连接共享***100上执行(例如,作为单独的线程)的对象或进程。尽管此处所描述的***和方法较佳地以软件来实现,但是硬件或软件和硬件的组合的实现也是可能并被构想的。
实施例1
本申请提供了一种浏览器间的连接共享方法,具体的,如图2所示,该方法包括:
S102,已打开的当前浏览器中用于执行脚本程序的实体对同一个资源标识符进行抢占,其中,抢占到资源标识符的实体为主实体,其它未抢占到资源标识符的实体为从实体;优选的,上述实体可以是执行Flash脚本程序的插件、功能模块或者硬件设备,也可以是执行具有相同功能的其他程序的插件、功能模块或者硬件设备,优选的,上述插件和功能模块可以由第三方开发,而硬件设备可以是运行所述浏览器的终端设备中的一个部件,或,几个部件的组合。
S104,主实体与服务器进行连接;
S106,从实体共享主实体与服务器之间建立的连接来与服务器进行消息传输。具体来说,首先,主实体接收服务器发送的消息,并将接收到的消息组播给与主实***于同一个组播组中的从实体;然后,主实体接收各个从实体根据发送消息方法发送的消息,其中,发送消息方法由主实体提供;最后,主实体根据发送消息方法将接收的消息发送给服务器。
在本优选的实施例中,当用户打开多个浏览器时,每个浏览器中用于执行脚本程序的实体会去竞争抢占资源标识符,其中,抢占到资源标识符的实体作为主实体,该主实体就成为发送和接收消息的主体,其它没有抢占到资源标识符的实体作为从实体,从实体与主实体进行消息传递。这样所有的实体都会共享这个连接发送和接收消息,解决了现有技术中由于缓冲区大小限制而导致的服务器连接浏览器的数量较少、服务器的服务效率下降的问题,达到了多个浏览器之间长连接的连接共享的效果。
本申请还提供了一种从实体共享主实体与服务器之间建立的连接来与服务器进行消息传输的优选的方法,具体的,该方法包括如下步骤:主实体接收服务器发送的消息;主实体将接收到的消息组播给与主实***于同一个组播组中的从实体。在上述优选是实施例中,主实体与服务器连接,并将接收的服务器的消息发送给从实体,实现了所有的从实体都可以通过主实体与服务器之间的连接来接收服务器下发的消息,进而达到了多个浏览器之间长连接的连接共享的效果。
本申请还提供了一种主实体将接收到的消息组播给与主实***于同一个组播组中的从实体的优选的方法,具体的,该方法包括:从实体获取主实体组播的消息中的标识,其中,标识用于唯一标识从实体中的一个;从实体判断自身的标识是否与主实体组播的消息中的标识一致;若一致,则执行判断步骤的实体判断出主实体组播的消息是属于自身的,并存储消息。在上述技术方案中,从实体通过获取主实体组播的消息中的标识来判断出组播的消失是否属于自身的,保证消息的正确传递。
本申请还对上述浏览器间的连接共享方法进行了优化,具体的,在主实体与服务器进行连接之后,上述浏览器间的连接共享方法还包括:从实体每隔预设周期抢占资源标识符;若抢占资源标识符成功、且主实体出现异常时,则抢占到资源标识符的从实体变为新的主实体,出现异常的主实体变为从实体。上述优选的技术方案中,从实体每隔预设周期抢占资源标识符,当主实体出现异常时,使得在主实体出现异常或被用户关闭时,执行脚本程序实体中有可以占有资源标识符的新的主实体,保证信息正常交互。
本申请还提供了一种主实体通过以下步骤加入到组播组的优选的方案,具体来说,该方案包括:主实体判断是否已加入组播组;若未加入到组播组中,则主实体判断共享文件中是否存在组播组的组播组名称;若存在组播组的组播组名称,则主实体根据共享文件中存在的组播组名称加入组播组;若不存在组播组的组播组名称,则主实体创建用于唯一标识组播组的组播组名称,将创建的组播组名称写入共享文件,并根据创建的组播组名称加入组播组。通过上述优选的实施方式,提供了一种具体的主实体加入到组播组的方法,进而保证主实体能够利用组播组把接收到的消息组播到所有的用于执行脚本程序实体中。
本申请还提供了一种从实体加入到组播组的优选的方案,具体来说,该方案包括:从实体判断是否已加入组播组;若未加入到组播组中,则从实体判断共享文件中是否存在组播组的组播组名称;若存在组播组的组播组名称,则从实体根据共享文件中存在的组播组名称加入组播组;若不存在组播组的组播组名称,则从实体根据主实体提供的获取组播组的组播组名称的方法获取组播组的组播组名称,将获取的组播组名称写入共享文件中,并根据获取的组播组名称加入组播组。通过上述优选的实施方式,提供了一种具体的从实体加入到组播组的方法,保证从实体能够接收到主实体能够利用组播组组播的消息。
本申请还提供了一种从实体共享主实体与服务器之间建立的连接来与服务器进行消息传输的优选的方法,具体来说,该方法包括如下步骤:主实体接收各个从实体根据发送消息方法发送的消息,其中,发送消息方法由主实体提供;主实体根据发送消息方法将接收的消息发送给服务器。在上述优选的实施例中,通过从实体共享主实体与服务器之间建立的连接来与服务器进行消息传输,使得从实体与主实体进行消息传递,进而实现多个浏览器之间长连接的连接共享。
实施例2
在实施例1的基础上,本申请还提供了一种浏览器间的连接共享装置,具体的,如图3,该装置包括:第一判断单元302,用于判断已打开的当前浏览器中用于执行脚本程序的实体是否为主实体,其中,已打开的当前浏览器中的实体对同一个资源标识符进行抢占,抢占到资源标识符的实体为主实体,其它未抢占到资源标识符的实体为从实体;优选的,上述实体可以是执行Flash脚本程序的插件、功能模块或者硬件设备,也可以是执行具有相同功能的其他程序的插件、功能模块或者硬件设备,优选的,上述插件和功能模块可以由第三方开发,而硬件设备可以是运行所述浏览器的终端设备中的一个部件,或,几个部件的组合。连接单元304,用于在已打开的当前浏览器中的实体为主实体时,将主实体与服务器进行连接;共享单元306,用于将主实体与服务器之间建立的连接共享给从实体以使从实体通过连接与服务器进行消息传输。
在上述优选的实施例中,当用户打开多个浏览器时,每个浏览器中用于执行脚本程序的实体会去竞争抢占资源标识符,其中,抢占到资源标识符的实体作为主实体,该主实体就成为发送和接收消息的主体,其它没有抢占到资源标识符的实体作为从实体,从实体与主实体进行消息传递。这样所有的实体都会共享这个连接发送和接收消息,解决了现有技术中由于缓冲区大小限制而导致的服务器连接浏览器的数量较少、服务器的服务效率下降的问题,达到了多个浏览器之间长连接的连接共享的效果。
本申请还对上述共享单元306进行了改进,以实现从实体共享主实体与服务器之间建立的连接来与服务器进行消息传输的技术效果,具体的,如图4所示,共享单元306包括:第一接收模块402,用于在已打开的当前浏览器中的实体为主实体时,接收服务器发送的消息;组播模块404,用于将接收到的消息组播给与主实***于同一个组播组中的从实体。在上述优选是实施例中,主实体与服务器连接,并将接收的服务器的消息发送给从实体,实现了所有的实体都会共享消息,进而达到了多个浏览器之间长连接的连接共享的效果。
本申请还对上述组播模块404进行了改进,以实现主实体将接收到的消息组播给与主实***于同一个组播组中的从实体。具体的,如图5所示,该组播模块404包括:获取子模块502,用于在已打开的当前浏览器中的实体为从实体时,获取主实体组播的消息中的标识,其中,标识用于唯一标识从实体中的一个;判断子模块504,用于判断从实体自身的标识是否与主实体组播的消息中的标识一致,若一致,则判断出主实体组播的消息是属于自身的,并存储消息。在上述技术方案中,从实体通过获取主实体组播的消息中的标识来判断出组播的消失是否属于自身的,保证消息的正确传递。
本申请还对上述装置进行了改进,具体的,如图6所示,该装置还包括:抢占单元602,用于在已打开的当前浏览器中的实体为从实体时,在主实体与服务器进行连接之后,每隔预设周期抢占资源标识符;转换单元604,用于在抢占资源标识符成功、且主实体出现异常时,将抢占到资源标识符的从实体变为新的主实体,出现异常的主实体变为从实体。上述优选的技术方案中,从实体每隔预设周期抢占资源标识符,当主实体出现异常时,使得在主实体出现异常或被用户关闭时,实体中有可以占有资源标识符的新的主实体,保证信息正常交互。
本申请还对上述装置进行了进一步的改进,具体的,如图7所示,该装置还包括:第二判断单元702,用于在已打开的当前浏览器中的实体为主实体时,判断主实体是否已加入组播组;第三判断单元704,用于在主实体未加入到组播组时,判断共享文件中是否存在组播组的组播组名称;第一加入单元706,用于在第三判断单元704判断共享文件中存在组播组的组播组名称时,根据共享文件中存在的组播组名称将主实体加入组播组;第一创建单元708,用于在第三判断单元704判断共享文件中不存在组播组的组播组名称时,创建用于唯一标识组播组的组播组名称,将创建的组播组名称写入共享文件,并根据创建的组播组名称将主实体加入组播组。通过上述优选的实施方式,提供了一种具体的主实体加入到组播组的方法,进而保证主实体能够利用组播组把接收到的消息组播到所有的实体中。
本申请还对上述装置进行了进一步的改进,具体的,如图8所示,该装置还包括:第四判断单元802,用于在已打开的当前浏览器中的实体为从实体时,判断从实体是否已加入组播组;第五判断单元804,用于从实体未加入到组播组时,判断共享文件中是否存在组播组的组播组名称;第二加入单元806,用于在第五判断单元804判断共享文件中存在组播组的组播组名称时,根据共享文件中存在的组播组名称将从实体加入组播组;获取单元808,用于在第五判断单元804判断共享文件中不存在组播组的组播组名称时,根据主实体提供的获取组播组的组播组名称的方法获取组播组的组播组名称,将获取的组播组名称写入共享文件中,并根据获取的组播组名称将从实体加入组播组。通过上述优选的实施方式,提供了一种具体的从实体加入到组播组的方法,保证从实体能够接收到主实体能够利用组播组组播的消息。
本申请还对上述共享单元306进行了进一步的改进,以达到从实体共享主实体与服务器之间建立的连接来与服务器进行消息传输的效果,具体的,如图9所示,共享单元306包括:第二接收模块902,用于在已打开的当前浏览器中的实体为主实体时,接收各个从实体根据发送消息方法发送的消息,其中,发送消息方法由主实体提供;发送模块904,用于根据发送消息方法将接收的消息发送给服务器。在上述优选的实施例中,通过从实体共享主实体与服务器之间建立的连接来与服务器进行消息传输,使得从实体与主实体进行消息传递,进而实现多个浏览器之间长连接的连接共享。
此处需要说明的是,上述第一判断单元302、第二判断单元702、第三判断单元704、第四判断单元802和第五判断单元804可以是相互独立的判断单元,也可以是同一个判断单元;上述第一加入单元706和第二加入单元806可以是相互独立的加入单元,也可以是同一个加入单元;上述第一接收模块402和第二接收模块902可以是相互独立的接收模块,也可以是同一个接收模块。
实施例3
在上述实施例2的基础上,本申请还提供了一种浏览器间的连接共享装置,具体的,图10示出了该装置的具体工作方式,在图10中可以看出,当用户打开多个浏览器时,每个浏览器中用于执行脚本程序的实体会去竞争抢占资源标识符,总会只有一个实体可以抢占成功,这个实体就成为发送和接收消息的主体,其他的实体均与该实体进行消息传递。这样所有的实体都会共享这个连接发送和接收消息。具体来说,包括如下步骤:
第一步:抢占资源标识符
如图11所示,在正常流程情况下,每个浏览器中用于执行脚本程序的实体会启动一个任务,这个任务用来尝试抢占资源标识符,使用LocalConnection.connect(资源标识符)。因为相同的资源标识符只会有一个实体能够占有,这样就必然会出现只有一个实体占有了资源标识符,称为主实体,而其他的实体则不能占有,称为从实体;在异常流程下,为了能够容错,防止主实体异常或被用户关闭,从实体会以一定的频率不断尝试占有资源标识符,一旦主实体出现异常,则从实体中又有一个可以占有资源标识符成为新的主实体。
第二步:加入组播组
如图12所示,当实体抢占到资源标识符成为主实体后,需要利用组播组把接收到的消息组播到所有的实体。具体流程如下:
对于主实体:1)先判断是否已加入组播组:如果是第一次打开实体,则没有加入组播组,如果是由从实体竞争成为主实体,则已加入组播组,如果没加入组播组则需要加入。2)判断ShareObject中是否存在组播组名称:第一次打开实体或ShareObject被用户删除,则不存在,其他情况均存在。如果不存在,则需要创建唯一标识的组播组名称并写入ShareObject,如果存在,则直接利用组播组名称加入组播组,其中,优选的,加入组播组需要使用到flash的GroupSpecifier类和NetGroup类。
对于从实体:1)新打开的从实体都没有加入组播组,直接需要加入。2)判断ShareObject中是否存在组播组名称:正常情况肯定存在,利用组播组名称创建并加入同一个组播组;如果不存在(如ShareObject被用户删除),则进入异常流程。3)异常流程:调用主实体的LocalConnection提供的获取组播组名称的方法,拿到组播组名称写入ShareObject,并加入同一个组播组。
其中,唯一的组播组名称是为了在同一个网段的其他的机器互不干扰,需要每台机器生成唯一的名称,优选的,可以采取使用随机32位字符串的方案。
第三步:消息传递
如图13所示,每个从实体的消息发送调用LocalConnection.send(资源标识符、方法名、参数),通过主实体提供的发送消息方法发送消息。该方法中维护与服务器的长连接。
当有消息送达主实体,主实体可以通过之前创建的组播组向所有的从实体组播消息。所有的从实体均会获得接收到的消息,然后过滤取得属于自己的消息。
因为需要识别这条消息是否属于自己的实体,需要每个实体有一个唯一标识,优选的,可以由随机生成32位字符串来完成,所以整个消息体需要有一种数据结构支持。对于P2P的消息传递,本身的协议一定已经包含了消息的发送方和接收方,所以基本不需要额外定义;对于BS结构的消息传递,需要用户自己在服务器端和客户端进行发送方识别。优选的,可以如下表所示。至此,发送和接收消息的流程均已完成,并且所有的实体与服务器的连接只存在一份。
字段 | 描述 |
text | 消息内容 |
sender | 发送方,由发送消息的实体指定的唯一标识 |
从以上的描述中,可以看出,本申请实现了如下技术效果:由于本申请记载的方案在各实体之间采用了进程间通信技术,所有的数据均在内存中进行传递,所以速度会非常快;本方案不涉及任何依赖浏览器的技术,全部都是通过flash的进程间通信,所以很好的打通了各种类型的浏览器数据共享;本方案所有数据直接在内存中操作,所以对数据量的限制使用大小比使用本地存储的方案要大的多;本申请所记载的技术方案可以大幅降低本地浏览器产生的连接数;共享对象(ShareObject)文件的大小不会由于浏览器的增多而增大,理论上可以支持任意多的浏览器共享连接,而性能不会有任何变化;对于使用流数据(如视频等)的应用也可以采用这种方式来共享流数据,对于发送数据的报文大小没有任何要求。
从上述优选的实施方式中可以看出,当用户打开多个浏览器时,每个浏览器的实体会去竞争抢占资源标识符,其中,抢占到资源标识符的实体作为主实体,该主实体就成为发送和接收消息的主体,其它没有抢占到资源标识符的实体作为从实体,从实体与主实体进行消息传递。这样所有的实体都会共享这个连接发送和接收消息,解决了现有技术中由于缓冲区大小限制而导致的服务器连接浏览器的数量较少、服务器的服务效率下降的问题,达到了多个浏览器之间长连接的连接共享的效果。
显然,本领域的技术人员应该明白,上述的本申请的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请不限制于任何特定的硬件和软件结合。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (10)
1.一种浏览器间的连接共享方法,其特征在于,包括:
已打开的每个浏览器中用于执行脚本程序的实体对同一个资源标识符进行抢占,其中,抢占到所述资源标识符的实体为主实体,其它未抢占到所述资源标识符的实体为从实体;
所述主实体与服务器进行连接;
所述从实体共享所述主实体与所述服务器之间建立的连接来与所述服务器进行消息传输;
所述从实体共享所述主实体与所述服务器之间建立的连接来与所述服务器进行消息传输的步骤包括:所述主实体接收所述服务器发送的消息;所述主实体将接收到的消息组播给与所述主实***于同一个组播组中的从实体;
或者,所述从实体共享所述主实体与所述服务器之间建立的连接来与所述服务器进行消息传输的步骤包括:所述主实体接收各个所述从实体根据发送消息方法发送的消息,其中,所述发送消息方法由所述主实体提供;所述主实体根据所述发送消息方法将接收的消息发送给所述服务器。
2.根据权利要求1所述的方法,其特征在于,所述主实体将接收到的消息组播给与所述主实***于同一个组播组中的从实体的步骤包括:
所述从实体获取所述主实体组播的消息中的标识,其中,所述标识用于唯一标识所述从实体中的一个;
所述从实体判断自身的标识是否与所述主实体组播的消息中的标识一致;
若一致,则所述执行判断步骤的实体判断出所述主实体组播的消息是属于自身的,
并存储所述消息。
3.根据权利要求1所述的方法,其特征在于,在所述主实体与服务器进行连接之后,还包括:
所述从实体每隔预设周期抢占所述资源标识符;
若抢占所述资源标识符成功、且所述主实体出现异常时,则抢占到所述资源标识符的从实体变为新的主实体,出现异常的主实体变为从实体。
4.根据权利要求1所述的方法,其特征在于,所述主实体通过以下步骤加入到组播组中:
所述主实体判断是否已加入组播组;
若未加入到所述组播组中,则所述主实体判断共享文件中是否存在所述组播组的组播组名称;
若存在所述组播组的组播组名称,则所述主实体根据所述共享文件中存在的组播组名称加入所述组播组;
若不存在所述组播组的组播组名称,则所述主实体创建用于唯一标识所述组播组的组播组名称,将创建的组播组名称写入所述共享文件,并根据所述创建的组播组名称加入所述组播组。
5.根据权利要求1所述的方法,其特征在于,所述从实体通过以下步骤加入到组播组中:
所述从实体判断是否已加入组播组;
若未加入到所述组播组中,则所述从实体判断共享文件中是否存在所述组播组的组播组名称;
若存在所述组播组的组播组名称,则所述从实体根据所述共享文件中存在的组播组名称加入所述组播组;
若不存在所述组播组的组播组名称,则所述从实体根据所述主实体提供的获取所述组播组的组播组名称的方法获取所述组播组的组播组名称,将获取的组播组名称写入所述共享文件中,并根据所述获取的组播组名称加入所述组播组。
6.一种浏览器间的连接共享装置,其特征在于,包括:
第一判断单元,用于判断已打开的当前浏览器中执行脚本程序的实体是否为主实体,其中,所述已打开的当前浏览器中的实体对同一个资源标识符进行抢占,抢占到所述资源标识符的实体为主实体,其它未抢占到所述资源标识符的实体为从实体;
连接单元,用于在已打开的当前浏览器中的实体为主实体时,将所述主实体与服务器进行连接;
共享单元,用于将所述主实体与所述服务器之间建立的连接共享给所述从实体以使所述从实体通过所述连接与所述服务器进行消息传输;
所述共享单元包括:第一接收模块,用于在已打开的当前浏览器中的实体为主实体时,接收所述服务器发送的消息;组播模块,用于将接收到的消息组播给与所述主实***于同一个组播组中的从实体;
或者,所述共享单元包括:第二接收模块,用于在已打开的当前浏览器中的实体为主实体时,接收各个所述从实体根据发送消息方法发送的消息,其中,所述发送消息方法由所述主实体提供;发送模块,用于根据所述发送消息方法将接收的消息发送给所述服务器。
7.根据权利要求6所述的装置,其特征在于,所述组播模块包括:
获取子模块,用于在已打开的当前浏览器中的实体为从实体时,获取所述主实体组播的消息中的标识,其中,所述标识用于唯一标识所述从实体中的一个;
判断子模块,用于判断所述从实体自身的标识是否与所述主实体组播的消息中的标识一致,若一致,则判断出所述主实体组播的消息是属于自身的,并存储所述消息。
8.根据权利要求6所述的装置,其特征在于,还包括:
抢占单元,用于在已打开的当前浏览器中的实体为从实体时,在所述主实体与服务器进行连接之后,每隔预设周期抢占所述资源标识符;
转换单元,用于在抢占所述资源标识符成功、且所述主实体出现异常时,将抢占到所述资源标识符的从实体变为新的主实体,出现异常的主实体变为从实体。
9.根据权利要求6所述的装置,其特征在于,还包括:
第二判断单元,用于在已打开的当前浏览器中的实体为主实体时,判断所述主实体是否已加入组播组;
第三判断单元,用于在所述主实体未加入到所述组播组时,判断共享文件中是否存在所述组播组的组播组名称;
第一加入单元,用于在所述第三判断单元判断所述共享文件中存在所述组播组的组播组名称时,根据所述共享文件中存在的组播组名称将所述主实体加入所述组播组;
第一创建单元,用于在所述第三判断单元判断所述共享文件中不存在所述组播组的组播组名称时,创建用于唯一标识所述组播组的组播组名称,将创建的组播组名称写入所述共享文件,并根据所述创建的组播组名称将所述主实体加入所述组播组。
10.根据权利要求6所述的装置,其特征在于,还包括:
第四判断单元,用于在已打开的当前浏览器中的实体为从实体时,判断所述从实体是否已加入组播组;
第五判断单元,用于所述从实体未加入到所述组播组时,判断共享文件中是否存在所述组播组的组播组名称;
第二加入单元,用于在所述第五判断单元判断所述共享文件中存在所述组播组的组播组名称时,根据所述共享文件中存在的组播组名称将所述从实体加入所述组播组;
获取单元,用于在所述第五判断单元判断所述共享文件中不存在所述组播组的组播组名称时,根据所述主实体提供的获取所述组播组的组播组名称的方法获取所述组播组的组播组名称,将获取的组播组名称写入所述共享文件中,并根据所述获取的组播组名称将所述从实体加入所述组播组。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210046581.3A CN103297455B (zh) | 2012-02-24 | 2012-02-24 | 浏览器间的连接共享方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210046581.3A CN103297455B (zh) | 2012-02-24 | 2012-02-24 | 浏览器间的连接共享方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103297455A CN103297455A (zh) | 2013-09-11 |
CN103297455B true CN103297455B (zh) | 2017-03-01 |
Family
ID=49097772
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210046581.3A Active CN103297455B (zh) | 2012-02-24 | 2012-02-24 | 浏览器间的连接共享方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103297455B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105357116B (zh) * | 2015-10-23 | 2018-04-06 | 上海斐讯数据通信技术有限公司 | 一种多终端访问服务器的方法和智能终端 |
CN107957938A (zh) * | 2016-10-14 | 2018-04-24 | 北京酷我科技有限公司 | 一种获取网站测试数据的方法及*** |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101621736A (zh) * | 2008-07-01 | 2010-01-06 | 华为技术有限公司 | 获取服务信息的方法、客户端和服务器 |
CN102098345A (zh) * | 2011-02-22 | 2011-06-15 | 深圳市同洲电子股份有限公司 | 一种资源分享方法和业务提供*** |
CN102291432A (zh) * | 2011-07-05 | 2011-12-21 | 广东威创视讯科技股份有限公司 | 网络信息共享方法、装置及客户端 |
-
2012
- 2012-02-24 CN CN201210046581.3A patent/CN103297455B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101621736A (zh) * | 2008-07-01 | 2010-01-06 | 华为技术有限公司 | 获取服务信息的方法、客户端和服务器 |
CN102098345A (zh) * | 2011-02-22 | 2011-06-15 | 深圳市同洲电子股份有限公司 | 一种资源分享方法和业务提供*** |
CN102291432A (zh) * | 2011-07-05 | 2011-12-21 | 广东威创视讯科技股份有限公司 | 网络信息共享方法、装置及客户端 |
Also Published As
Publication number | Publication date |
---|---|
CN103297455A (zh) | 2013-09-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107948324B (zh) | 请求传输***、方法、装置及存储介质 | |
CN108200165B (zh) | 请求传输***、方法、装置及存储介质 | |
CN110048927B (zh) | 通信方法和通信装置 | |
EP4054117B1 (en) | Computer-implemented system and method for propagation and communication of data in a network such as a blockchain network | |
CN108200158B (zh) | 请求传输***、方法、装置及存储介质 | |
US10958735B2 (en) | Client connection method and system | |
EP4054154A1 (en) | Blockchain-based systems and methods for propagating data in a network | |
CN104809369B (zh) | 分组设置设备访问权限的方法、客户端、服务器及*** | |
CN109639782A (zh) | 消息发送平台、方法 | |
CN104010001B (zh) | 移动终端中同类联网请求进行连接通信的方法和*** | |
CN103188245A (zh) | 一种对战类游戏服务端*** | |
CN109547524A (zh) | 基于物理网的用户行为存储方法、装置、设备及存储介质 | |
EP3794795A1 (en) | Systems and methods for propagating data packets in a network of nodes | |
CN108989438A (zh) | 数据分发网络的实现方法、装置和*** | |
CN103297455B (zh) | 浏览器间的连接共享方法和装置 | |
CN105653717B (zh) | 一种信息分享的方法及装置 | |
CN105991592A (zh) | 同人身份维护方法、装置及服务器 | |
CN104378398B (zh) | 信息发布方法、信息输出方法、装置、服务器及*** | |
CN105100101A (zh) | 一种基于ssl会话的方法、装置及*** | |
CN103533001A (zh) | 基于http多重代理的通信方法和***、中间代理服务器 | |
CN103001942A (zh) | 一种虚拟服务器和一种防御网络攻击的方法 | |
CN114615315A (zh) | 线上会话的通讯方法、装置、设备及存储介质 | |
CN106101189A (zh) | 数据传输方法及*** | |
JP5410487B2 (ja) | キャッシュサーバ、ウェブサーバ及び方法 | |
CN105847458A (zh) | 基于dns的p2p缓存引导***及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1184931 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: GR Ref document number: 1184931 Country of ref document: HK |