CN102932352B - 和客户端进行通信的方法以及服务器 - Google Patents
和客户端进行通信的方法以及服务器 Download PDFInfo
- Publication number
- CN102932352B CN102932352B CN201210433894.4A CN201210433894A CN102932352B CN 102932352 B CN102932352 B CN 102932352B CN 201210433894 A CN201210433894 A CN 201210433894A CN 102932352 B CN102932352 B CN 102932352B
- Authority
- CN
- China
- Prior art keywords
- client
- server
- interface channel
- long
- long interface
- 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
- 238000000034 method Methods 0.000 title claims abstract description 49
- 230000004044 response Effects 0.000 claims abstract description 39
- 238000012546 transfer Methods 0.000 claims abstract description 10
- 238000004891 communication Methods 0.000 claims description 61
- 230000005540 biological transmission Effects 0.000 claims description 24
- 230000001360 synchronised effect Effects 0.000 claims description 7
- 230000008569 process Effects 0.000 description 21
- 238000003860 storage Methods 0.000 description 19
- 238000004519 manufacturing process Methods 0.000 description 7
- 230000008901 benefit Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 239000003550 marker Substances 0.000 description 2
- 238000005096 rolling process Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 150000001875 compounds Chemical class 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000009897 systematic effect Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/1066—Session management
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Business, Economics & Management (AREA)
- General Business, Economics & Management (AREA)
- Multimedia (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了一种在服务器处和客户端进行通信的方法以及服务器,能够使客户端及时知晓长连接的建立情况以便与服务器进行通信。该方法包括:接收客户端发送的请求消息,获取包含在请求消息中的客户端的客户端标识;确定客户端信息列表中是否存储了与客户端标识相对应的长连接通道标识,如果存储了长连接通道标识,则向客户端返回用于指示长连接已建立的第一响应消息;如果未存储长连接通道标识,则为客户端分配一个长连接通道,将长连接通道的长连接通道标识以及客户端标识存入客户端信息列表中,并向客户端返回用于指示长连接未建立的第二响应消息;以及根据与客户端之间建立的长连接,在服务器和客户端之间传输消息。
Description
技术领域
本发明涉及通信领域,具体涉及一种和客户端进行通信的方法以及服务器。
背景技术
随着网络的快速发展,出现了很多基于网络的应用,这些网络应用包括在线视频、在线交友以及网络游戏等。网络应用的用户需要通过客户端和服务器进行通信,以获取服务器提供的服务。
为了实现客户端与服务器之间的通信,首先需要在客户端和服务器之间建立连接,常用的连接方式有两种,一种是长连接通信方式,一种是短连接通信方式。所谓长连接通信,是指建立一个连接之后,在这个连接上可以连续发送多个数据包,然后断开连接,在连接保持期间,如果没有数据包发送,需要发送链路检测包;所谓短连接通信,是指通信双方有数据交互时,就建立一个连接,数据发送完成后,则断开此连接,即每次连接只完成一项业务的发送。
由于短连接通信方式需要频繁建立连接,因此,在网络应用中通常采用长连接通信方式进行通信。但是,目前,长连接的建立仅仅是服务器端的行为,客户端并不知晓长连接是否已经建立以及建立了多少个长连接,甚至也无法知道长连接是否已经失效。因此,客户端无法知晓长连接的建立情况,不利于客户端与服务器之间的通信。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的和客户端进行通信的方法以及服务器。
依据本发明的一个方面,提供了一种在服务器处和客户端进行通信的方法,包括以下步骤:接收到客户端发送的请求消息,获取包含在请求消息中的客户端的客户端标识;确定客户端信息列表中是否存储了与客户端标识相对应的长连接通道标识,如果存储了长连接通道标识,则向客户端返回用于指示长连接已建立的第一响应消息;如果未存储长连接通道标识,则为客户端分配一个长连接通道,将长连接通道的长连接通道标识以及客户端标识存入客户端信息列表中,并向客户端返回用于指示长连接未建立的第二响应消息,其中,第二响应消息中包含长连接通道标识,用于指示客户端根据长连接通道标识与服务器建立长连接;以及根据与客户端之间建立的长连接,在服务器和客户端之间传输消息。
可选地,其中请求信息还包括当前在客户端上运行的应用的应用标识,以及在服务器和客户端之间传输消息的步骤包括将该应用相关的消息传输到客户端。
可选地,客户端每隔预设的第一时间间隔向服务器发送请求消息。
可选地,还包括步骤:在客户端信息列表中与客户端标识相关联地存储每次接收到客户端发送的请求消息的时间。
可选地,还包括步骤:每隔预设的第二时间间隔对客户端信息列表中存储的客户端发送请求消息的时间间隔进行检测,将与在第二时间间隔内没有发送请求消息的客户端对应的长连接通道标识删除,并断开长连接通道标识对应的长连接通道,其中,第二时间间隔大于第一时间间隔。
可选地,还包括步骤:客户端每隔预设的第三时间间隔向服务器发送同步请求,服务器接收到同步请求后向客户端返回未同步的数据。
根据本发明的另一方面,提供了一种适于和客户端进行通信的服务器,包括:存储单元,适于存储客户端信息列表;通信接口,适于接收到客户端发送的请求消息,获取包含在请求消息中的客户端的客户端标识;通信控制器,适于确定客户端信息列表中是否存储了与客户端标识相对应的长连接通道标识,如果存储了长连接通道标识,则控制通信接口向客户端返回指示长连接已建立的第一响应消息;如果未存储长连接通道标识,则为客户端分配一个长连接通道,将长连接通道的长连接通道标识以及客户端标识存入客户端信息列表中,并控制通信接口向客户端返回指示长连接未建立的第二响应消息,其中,第二响应消息中包含长连接通道标识,该长连接通道标识指示客户端根据长连接通道标识与服务器建立长连接;其中,通信接口还根据与客户端之间建立的长连接,在服务器和客户端之间传输消息。
可选地,请求信息还包括当前在客户端上运行的应用的应用标识,则通信接口具体用于将该应用相关的消息传输到客户端。
可选地,客户端每隔预设的第一时间间隔向服务器发送请求消息。
可选地,存储单元还适于在客户端信息列表中与客户端标识相关联地存储每次接收到客户端发送的请求消息的时间。
可选地,进一步包括:链接管理器,适于每隔预设的第二时间间隔对客户端信息列表中存储的客户端发送请求消息的时间间隔进行检测,将与在第二时间间隔内没有发送请求消息的客户端对应的长连接通道标识删除,并断开长连接通道标识对应的长连接通道,其中,第二时间间隔大于第一时间间隔。
可选地,还包括同步单元,其接收客户端每隔预设的第三时间间隔发送的同步请求,并根据同步请求向客户端返回未同步的数据。
根据本发明的和客户端进行通信的方法以及服务器,在接收到客户端主动发送的请求消息后,根据客户端信息列表确定与该客户端之间是否已经建立了长连接通道,并将结果返回给客户端,由此解决了现有技术中的客户端无法知晓长连接的建立情况的问题,取得了能够使客户端及时知晓长连接的建立情况以便与服务器进行通信的有益效果。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的附图标记表示相同的部件。在附图中:
图1示出了根据本发明一个实施例的在服务器处和客户端进行通信的方法的流程图;
图2示出了根据本发明一个实施例的包含适于和客户端进行通信的服务器的通信系统的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
图1示出了本发明实施例提供的一种在服务器处和客户端进行通信的方法。图1所示的方法主要示出了服务器端执行的步骤,在服务器执行步骤S110之前,客户端首先需要构造并发送请求消息。
具体地,在构造请求消息时,客户端每隔预设的第一时间间隔(例如,4分钟)获取一次当前在该客户端上运行的应用的应用标识,以及该客户端的客户端标识,并根据获取的应用标识以及客户端标识构造请求消息,将该请求消息发送给服务器。
当前在该客户端上运行的应用例如可以是用户在该客户端上正在玩的网络游戏。这时,相应的应用标识可以是该网络游戏的游戏名称、游戏ID和/或游戏区服等相关的信息;或者,当前在该客户端上运行的应用也可以是用户在该客户端上正在收听的歌曲,这时,相应的应用标识可以是该歌曲的歌曲名称等。另外,当客户端上运行的应用为多个时,也可以同时获取这多个应用的应用标识。具体地,在获取客户端上运行的应用的应用标识时,可以通过多种方法,例如,可以通过任务管理器中的进程个数和进程名称获取。
以客户端为网络浏览器、应用为基于网页的网络游戏为例来说,可以通过一些特定的javascript代码来获取网络游戏的游戏ID作为应用标识:
例如,在游戏页面中嵌入代码
<scriptsrc="http://u8.wan.360.cn/loader.js">U8.location="frmmo_S19";</script>,
其中的location字段标示了用户所玩游戏的游戏区服,然后,通过loader.js脚本即可获取location字段中的内容,进而获取到游戏区服以及该网络游戏的游戏ID。
客户端的客户端标识主要是指能够唯一确定该客户端的标识信息,例如,可以是该客户端对应的IP地址。
随后,将所获取的应用标识(即游戏ID)和客户端标识发送到服务器,这可以利用下面的代码来完成:
客户端构造的请求消息中包含了上面获取的应用标识和客户端标识,例如,可以将该应用标识和客户端标识作为请求消息的消息体或请求消息的一个字段。然后,由客户端主动地将该请求消息发送给服务器。
在步骤S110中,服务器接收到上述客户端发送的请求消息,获取包含在该请求消息中的客户端标识以及应用标识。
接下来,在步骤S120中,服务器需要查找预先存储的客户端信息列表,确定该客户端信息列表中是否存储了与步骤S110中获取的客户端标识相对应的长连接通道标识。如果客户端信息列表中存储了与该客户端标识相对应的长连接通道标识,则执行步骤S130,在步骤S130中,向该客户端返回用于指示长连接已建立的第一响应消息。如果客户端信息列表中未存储与该客户端标识相对应的长连接通道标识,则执行步骤S140,在步骤S140中,为该客户端分配一个长连接通道,并将分配的该长连接通道的长连接通道标识以及该客户端标识对应存入该客户端信息列表中,并向该客户端返回用于指示长连接未建立的第二响应消息。其中,第二响应消息中包含该长连接通道标识,用于指示客户端根据该长连接通道标识与服务器建立长连接。
应当注意的是,在本技术方案中,并不是服务器发起与客户端建立长连接,而是服务器设置好客户端要建立长连接所需要的配置内容,将这些内容返回给客户端,并由客户端根据这些配置内容主动发起与服务器建立长连接。对于基于诸如HTTP协议之类的无状态连接的应用(诸如基于网页的应用)而言,由于客户端和服务器之间的连接本身就处于无状态连接方式,这种长连接的建立方式更有利于客户端本身来控制长连接。
在步骤S120至步骤S140的执行过程中,需要存储并维护一份客户端信息列表,然后根据该客户端信息列表来判断发送请求消息的客户端与服务器之间是否已经建立了长连接,并根据判断结果执行相应的处理。
具体地,每当服务器接收到一个客户端发送的一次请求消息后,先要查找客户端信息列表中是否存储有该客户端的客户端标识,如果没有,在该客户端信息列表中添加该客户端的客户端标识,在该客户端信息列表中存储了该客户端的客户端标识的前提下,进一步判断该客户端信息列表中是否存储了与该客户端标识相对应的长连接通道标识,如果存储了与该客户端标识相对应的长连接通道标识,说明该客户端与服务器之间已经建立了长连接,因此,直接向客户端返回用于指示长连接已经建立的第一响应消息。如果该客户端信息列表中还没有存储与该客户端标识相对应的长连接通道标识,说明该客户端与服务器之间没有建立长连接,因此,需要先为该客户端分配一个长连接通道,并将分配的长连接通道的长连接通道标识以及该客户端标识对应存储在该客户端信息列表中。
客户端信息列表中的长连接通道标识是通过如下方式存储的:每次新添加一个客户端标识时,服务器为该新添加的客户端标识分配一个长连接通道标识,并将该长连接通道标识与该客户端标识对应存储在客户端信息列表中,因此,当客户端信息列表中没有存储请求消息中的客户端标识时,必然也没有存储与该客户端标识相对应的长连接通道标识,这时,需要服务器执行步骤S140,为该客户端分配一个长连接通道,并向客户端返回包含该长连接通道的长连接通道标识的第二响应消息,以指示客户端建立长连接。服务器为客户端分配长连接通道之后,会将该长连接通道及其通道标识添加到客户端信息列表中,因此,当在后续过程中服务器再次接收到该客户端发送的请求消息时,则会发现在客户端信息列表中已经存储了该客户端的长连接通道标识,这时,服务器执行步骤S130,无需修改客户端信息列表,只需向客户端返回用于指示长连接已建立的第一响应消息即可。
具体地,服务器在判断该客户端信息列表中是否存储了该客户端的客户端标识对应的长连接通道标识时,可以采用如下代码实现:
由此可见,服务器通过sub_cnt参数的值来确定长连接是否存在,如果sub_cnt参数值为1表示长连接已经存在,客户端无需建立长连接,因此向客户端返回第一响应消息;如果sub_cnt参数值为0表示长连接还不存在,客户端应该立即建立长连接,因此向客户端返回第二响应消息。相应地,客户端如果接收到第一响应消息,则无需执行任何操作;如果接收到第二响应消息,则会根据第二响应消息中包含的长连接通道标识来与服务器建立长连接。
例如,在客户端收到第二响应消息之后,以上面基于网页的网络游戏为例,可以利用下面的javacript脚本来与服务器建立长连接:
从服务器端返回的数据data.comet_url中就存储有长连接通道标识,因此,通过U8.conn.init('js′),就可以根据长连接通道标识来和服务器建立长连接。
下面详细介绍一下客户端信息列表中存储的数据内容及存储格式。客户端信息列表中需要存储三类数据。为了提高运行效率,这三类数据可以采用redis存储系统进行存储,redis存储系统采用内存式存储,因此运行效率较高。
第一类数据是在线用户列表,在该类数据中主要存储当前在线的客户端的客户端标识,可以采用zset数据结构存储。Zset是一种带权重的set结构,可以将“USER|ONLINE”作为set的键,客户端标识(即用户id)作为值,用户上线时间作为权重,存储时间权重的目的主要是为了方便删除已下线的用户,从而尽量保证在线用户列表中存储的用户都为在线用户,具体删除的方法将在后面介绍。为了对第一类数据进行维护,每当服务器接收到客户端发送的请求消息后,都要判断在客户端信息列表中是否存储有该请求消息中包含的客户端标识(即用户id),当不包含该客户端标识时,在客户端信息列表的在线用户列表中增加一项存储条目,在该项存储条目中以zset数据结构存储该客户端标识以及该请求消息的发送时间,具体地,将“USER|ONLINE”作为这一存储条目的键,该客户端标识作为这一条目的值,并通过请求消息的发送时间来计算用户的上线时间,并将计算结果作为权重,由于客户端信息列表原本不包含该客户端标识,所以这是服务器第一次接收到该客户端发送的请求消息,因此,服务器记录下该次请求消息的时间,并计算用户上线时间为0。该客户端上线后会每隔4分钟发送一次请求消息,因此,当服务器以后再接收到该客户端发来的请求消息时,会发现客户端信息列表中已经存储了该客户端标识的存储条目,因此,只需根据本次接收到请求消息的时间,对该存储条目中的权重值进行更新即可,具体更新时,假设服务器是第N次接收到该客户端发送的请求消息,则计算第N次接收到请求消息的时间与第一次接收到请求消息的时间间隔作为该用户的上线时间。
第二类数据是每个在线用户对应的长连接通道,在该类数据中主要存储当前在线用户使用的客户端与服务器通信时所采用的长连接通道,也可以采用zset数据结构存储。可以将“CHANNEL_LIST|{id}”作为set的键,“{id}|{时间戳}”作为值,另外,还可以将用户上线时间作为权重。其中,{id}表示用户id,即第一类数据中的客户端标识,通过客户端标识将第一类数据与第二类数据对应地关联起来。其中,第二类数据中的每个长连接通道是由服务器为对应的客户端分配的。也就是说,每当服务器第一次接收到一个客户端发来的请求消息时,不仅要在在线用户列表中增加一条存储条目,用来存储该客户端标识,而且,由于该新增的客户端标识还没有对应的长连接通道,因此,服务器还会为该客户端标识对应分配一个长连接通道,并将该长连接通道作为第二类数据存储在客户端信息列表中,同时向客户端发送上述的第二响应消息。
第三类数据是每个长连接通道的ip地址,采用键-值方式存储,键为“CHANNEL_POS|{用户id}|{通道标示}”,值为长连接通道的ip地址,这个地址也就是服务器向客户端传输消息时的消息传输地址。其中,每个长连接通道的ip地址通过“用户id”与第二类数据中的长连接通道以及第一类数据中的客户端标识相关联。实际上,第三类数据中存储的长连接通道的ip地址就是第二类数据中存储的长连接通道的通道地址。也就是说,第二类数据仅仅存储了一个长连接通道的标号,而该标号对应的长连接通道的具体通道地址在第三类数据中存储。因此,服务器每次在第二类数据中新增一个长连接通道时,还要对应地在第三类数据中存储该长连接通道的通道地址,也就是长连接通道标识。
上述的三类数据主要存储了客户端的客户端标识(第一类数据)以及客户端的长连接通道标识(第三类数据),第二类数据将第一类数据和第三类数据更好地关联起来。具体实现时,也可以采用其它的存储方式,只要能够关联存储客户端的信息以及长连接通道的信息即可。
另外,为了实现对上述三类数据的有效维护,除了通过上述方式在每次接收到请求消息时判断该请求消息中包含的客户端标识是否已经存储在了客户端信息列表中,并在判断结果为否时,将该客户端标识添加到客户端信息列表中,并为该客户端标识分配一个长连接通道之外,还需要及时删除已经下线的客户端对应的客户端标识及其长连接通道。上面已经提到,上线的客户端是每隔4分钟向服务器发送一次请求消息,以便服务器知道客户端的在线状态。服务器每次收到请求消息后会记录下同一客户端每次发送请求消息的时间,与此同时,服务器运行一个进程,该进程每隔6分钟扫描一次客户端信息列表中存储的在线用户列表,将在6分钟之内没有发起请求消息的客户端对应的客户端标识以及相关联的长连接通道及长连接通道标识删除,从而实现及时删除下线用户的目的,同时断开相应的长连接通道。其中,本实施例中的4分钟和6分钟只是示意性的描述,在具体实现时,只要服务器中的进程扫描在线用户列表的时间间隔大于客户端每次发送请求消息时的时间间隔即可。
通过客户端信息列表中存储的上述数据,一方面,服务器可以在每次收到客户端发来的请求消息之后,确定出该客户端与服务器之间是否已经建立了长连接,并据此向客户端返回响应消息,以便客户端及时了解长连接的状态,并在长连接断开后能够及时建立连接,在此过程中,服务器进一步对客户端信息列表中的数据进行维护,以便于后续处理。另一方面,在后续执行步骤S150时,服务器可以根据该客户端信息列表,确定与客户端之间建立的长连接,通过该长连接在服务器和客户端之间传输消息。
在执行步骤S150的过程中,由于服务器在步骤S110中已经通过请求消息中的应用标识获知了在发送该请求消息的客户端上正在运行的应用,因此,服务器可以进一步对该应用标识进行存储,例如,可存储在客户端信息列表中或存储在其他存储区域内,然后,服务器在后续通过该客户端与服务器之间的长连接通道向该客户端传输消息时,可以有针对性地传输一些与该客户端上正在运行的应用相关的消息,以实现广告内容或者推广活动的精准推送。例如,如果客户端上目前正在玩一款大型的网络游戏,就可以向该客户端推送一些与该网络游戏相关的资讯或广告等。另外,本领域技术人员可以理解的是,步骤S110的请求消息中也可以不包含应用标识,同样能够实现服务器与客户端之间的消息传输。请求消息中包含应用标识只是为了使服务器向客户端推送数据时更有针对性,更贴合用户需求。
通过本发明实施例提供的方法,除了可以由服务器利用长连接通道向客户端精准推送数据之外,还可以由客户端利用长连接通道与服务器之间同步数据,例如,客户端可以采用轮询请求的方式来同步服务器端的数据,具体地,客户端可以每隔一定的时间间隔(如1分钟)向服务器发送同步请求,服务器每次接收到同步请求后将未同步的数据返回给客户端。为了缩短数据的延迟,可以将客户端发送同步请求的时间间隔设置得尽可能小。
由此可见,通过本发明实施例提供的方法,通过客户端发送请求消息,服务器通过自身维护的客户端信息列表向客户端返回响应消息的方式,可以使客户端及时了解与服务器之间的长连接的状态,并在长连接断开时及时建立连接。而且,服务器还可以通过该长连接向客户端传输消息,且可根据客户端正在运行的应用来有针对性的推送数据,因此,更加符合用户需求。
本发明可以特别地应用于基于诸如HTTP之类的无状态通信协议的网络应用场景中,尤其可以应用于基于web的应用场景中。在基于web的应用场景中,客户端为网络浏览器,特别是网络浏览器中的网页及其相关javascript脚本,而服务器为处理来自网页的请求的web服务器。
本发明实施例还提供了一种适于和客户端进行通信的服务器。图2示出了包含该服务器的通信系统的系统结构图。如图2所示,服务器200与多个客户端100相连,且服务器200进一步包括:通信接口210、通信控制器220以及存储单元230。
通信接口210接收客户端100发送的请求消息,获取包含在该请求消息中的该客户端100的客户端标识。
通信控制器220根据通信接口210获取的客户端标识,进一步确定存储单元230中存储的客户端信息列表中是否存储了与通信接口210获取到的客户端标识相对应的长连接通道标识,如果客户端信息列表中存储了与该客户端标识相对应的长连接通道标识,则控制通信接口210向客户端100返回指示长连接已建立的第一响应消息。如果客户端信息列表中未存储与该客户端标识相对应的长连接通道标识,则为客户端100分配一个长连接通道,将分配的长连接通道的长连接通道标识以及该客户端标识对应存入该客户端信息列表中,并控制通信接口210向客户端100返回指示长连接未建立的第二响应消息,其中,该第二响应消息中包含该长连接通道标识,用于指示客户端100根据该长连接通道标识与服务器200建立长连接。当客户端100收到该第二响应消息之后,以基于网页的网络游戏为例来说,可以利用下面的javacript脚本来与服务器200建立长连接:
从服务器200返回的数据data.comet_url中就存储有长连接通道标识,因此,通过U8.conn.init(′js′),就可以根据长连接通道标识来和服务器200建立长连接。
其中,通信控制器220需要与存储单元230配合来维护上述的客户端信息列表,然后根据该客户端信息列表来判断发送请求消息的客户端与服务器之间是否已经建立了长连接,并根据判断结果执行相应的处理。
具体地,每当通信接口210接收到一个客户端100发送的一次请求消息后,通信控制器220先要查找存储单元230的客户端信息列表中是否存储有该客户端100的客户端标识,如果没有,通信控制器220控制存储单元230在该客户端信息列表中添加该客户端的客户端标识,在该客户端信息列表中存储了该客户端的客户端标识的前提下,进一步判断该客户端信息列表中是否存储了与该客户端标识相对应的长连接通道标识,如果存储了与该客户端标识相对应的长连接通道标识,说明该客户端与服务器之间已经建立了长连接,因此,直接向客户端返回用于指示长连接已经建立的第一响应消息。如果该客户端信息列表中还没有存储与该客户端标识相对应的长连接通道标识,说明该客户端与服务器之间没有建立长连接,因此,通信控制器220需要先为该客户端分配一个长连接通道,并控制存储单元230将分配的长连接通道的长连接通道标识以及该客户端标识对应存储在该客户端信息列表中。
其中,客户端信息列表中的长连接通道标识是通过如下方式存储的:每次新添加一个客户端标识时,通信控制器220为该新添加的客户端标识分配一个长连接通道标识,并将该长连接通道标识与该客户端标识对应存储在客户端信息列表中,因此,当客户端信息列表中没有存储请求消息中的客户端标识时,必然也没有存储与该客户端标识相对应的长连接通道标识,这时,通信控制器220需要为该客户端分配一个长连接通道,并控制通信接口210向客户端返回包含该长连接通道的长连接通道标识的第二响应消息,以指示客户端建立长连接。通信控制器220为客户端分配长连接通道之后,会将该长连接通道及其通道标识添加到客户端信息列表中,因此,当在后续过程中通信接口210再次接收到该客户端发送的请求消息时,通信控制器220则会发现在客户端信息列表中已经存储了该客户端的长连接通道标识,这时,通信控制器220无需修改客户端信息列表,只需控制通信接口210向客户端返回用于指示长连接已建立的第一响应消息即可。
下面详细介绍一下存储单元230的客户端信息列表中存储的数据内容及存储格式。客户端信息列表中需要存储三类数据。为了提高运行效率,这三类数据可以采用redis存储系统进行存储,redis存储系统采用内存式存储,因此运行效率较高。
第一类数据是在线用户列表,在该类数据中主要存储当前在线的客户端的客户端标识,可以采用zset数据结构存储。Zset是一种带权重的set结构,可以将“USER|ONLINE”作为set的键,客户端标识(即用户id)作为值,用户上线时间作为权重,存储时间权重的目的主要是为了方便删除已下线的用户,从而尽量保证在线用户列表中存储的用户都为在线用户,具体删除的方法将在后面介绍。为了对第一类数据进行维护,每当通信接口210接收到客户端发送的请求消息后,通信控制器220都要判断在客户端信息列表中是否存储有该请求消息中包含的客户端标识(即用户id),当不包含该客户端标识时,在客户端信息列表的在线用户列表中增加一项存储条目,在该项存储条目中以zset数据结构存储该客户端标识以及该请求消息的发送时间,具体地,将“USER|ONLINE”作为这一存储条目的键,该客户端标识作为这一条目的值,并通过请求消息的发送时间来计算用户的上线时间,并将计算结果作为权重,由于客户端信息列表原本不包含该客户端标识,所以这是服务器第一次接收到该客户端发送的请求消息,因此,存储单元230记录下该次请求消息的时间,并计算用户上线时间为0。该客户端上线后会每隔4分钟发送一次请求消息,因此,当服务器以后再接收到该客户端发来的请求消息时,会发现客户端信息列表中已经存储了该客户端标识的存储条目,因此,只需根据本次接收到请求消息的时间,对该存储条目中的权重值进行更新即可,具体更新时,假设服务器是第N次接收到该客户端发送的请求消息,则计算第N次接收到请求消息的时间与第一次接收到请求消息的时间间隔作为该用户的上线时间。
第二类数据是每个在线用户对应的长连接通道,在该类数据中主要存储当前在线用户使用的客户端与服务器通信时所采用的长连接通道,也可以采用zset数据结构存储。可以将“CHANNEL_LIST|{id}”作为set的键,“{id}|{时间戳}”作为值,另外,还可以将用户上线时间作为权重。其中,{id}表示用户id,即第一类数据中的客户端标识,通过客户端标识将第一类数据与第二类数据对应地关联起来。其中,第二类数据中的每个长连接通道是由服务器为对应的客户端分配的。也就是说,每当通信接口210第一次接收到一个客户端发来的请求消息时,存储单元230不仅要在在线用户列表中增加一条存储条目,用来存储该客户端标识,而且,由于该新增的客户端标识还没有对应的长连接通道,因此,通信控制器220还会为该客户端标识对应分配一个长连接通道,并将该长连接通道作为第二类数据存储在客户端信息列表中,同时控制通信接口210向客户端发送上述的第二响应消息。
第三类数据是每个长连接通道的ip地址,采用键-值方式存储,键为“CHANNEL_POS|{用户id}|{通道标示}”,值为长连接通道的ip地址,这个地址也就是服务器向客户端传输消息时的消息传输地址。其中,每个长连接通道的ip地址通过“用户id”与第二类数据中的长连接通道以及第一类数据中的客户端标识相关联。实际上,第三类数据中存储的长连接通道的ip地址就是第二类数据中存储的长连接通道的通道地址。也就是说,第二类数据仅仅存储了一个长连接通道的标号,而该标号对应的长连接通道的具体通道地址在第三类数据中存储。因此,存储单元230每次在第二类数据中新增一个长连接通道时,还要对应地在第三类数据存储该长连接通道的通道地址,也就是长连接通道标识。
上述的三类数据主要存储了客户端的客户端标识(第一类数据)以及客户端的长连接通道标识(第三类数据),第二类数据将第一类数据和第三类数据更好地关联起来。具体实现时,也可以采用其它的存储方式,只要能够关联存储客户端的信息以及长连接通道的信息即可。
另外,为了实现对上述三类数据的有效维护,除了通过上述方式在每次接收到请求消息时由通信控制器220判断该请求消息中包含的客户端标识是否已经存储在了客户端信息列表中,并在判断结果为否时,将该客户端标识添加到客户端信息列表中,并为该客户端标识分配一个长连接通道之外,还需要及时删除已经下线的客户端对应的客户端标识及其长连接通道,对此,该服务器还可以进一步包括一个链接管理器240,用于确定下线的客户端并将其删除。上面已经提到,上线的客户端是每隔4分钟向服务器发送一次请求消息,服务器每次收到请求消息后由存储单元230记录下同一客户端每次发送请求消息的时间,因此,该链接管理器240需要运行一个进程,该进程每隔6分钟扫描一次存储单元230的客户端信息列表中存储的在线用户列表,将在6分钟之内没有发起请求消息的客户端对应的客户端标识以及相关联的长连接通道及长连接通道标识删除,从而实现及时删除下线用户的目的,同时断开相应的长连接通道。其中,本实施例中的4分钟和6分钟只是示意性的描述,在具体实现时,只要链接管理器240中的进程扫描在线用户列表的时间间隔大于客户端每次发送请求消息时的时间间隔即可。
通过客户端信息列表中存储的上述数据,一方面,服务器可以在每次收到客户端发来的请求消息之后,确定出该客户端与服务器之间是否已经建立了长连接,并据此向客户端返回响应消息,以便客户端及时了解长连接的状态,并在长连接断开后能够及时建立连接,在此过程中,服务器进一步对客户端信息列表中的数据进行维护,以便于后续处理。另一方面,在后续过程中,服务器还可以根据该客户端信息列表,确定与客户端之间建立的长连接,由通信接口210通过该长连接在服务器和客户端之间传输消息。
可选地,客户端100发送的请求消息中还可以进一步包括当前在该客户端上运行的应用的应用标识,其中,当前在该客户端上运行的应用例如可以是用户在该客户端上正在玩的网络游戏,这时,相应的应用标识可以是该网络游戏的游戏名称、游戏ID和/或游戏区服等相关的信息;或者,当前在该客户端上运行的应用也可以是用户在该客户端上正在收听的歌曲,这时,相应的应用标识可以是该歌曲的歌曲名称等。另外,当客户端上运行的应用为多个时,也可以同时获取这多个应用的应用标识。由于服务器已经通过请求消息中的应用标识获知了在发送该请求消息的客户端上正在运行的应用,因此,服务器在后续通过该客户端与服务器之间的长连接通道传输消息时,可以有针对性地传输一些与客户端上正在运行的应用相关的消息,以实现广告内容或者推广活动的精准推送。例如,如果客户端上目前正在玩一款大型的网络游戏,就可以向该客户端推送一些与该网络游戏相关的资讯或广告等。其中,客户端获取应用标识(例如游戏ID)并将获取的应用标识以及客户端标识发送给服务器的通信接口210的具体过程可参照方法实施例中的代码实现,此处不再赘述。
另外,本实施例中的服务器还可以进一步包括同步单元(图中未示出),用于接收客户端每隔预设的第三时间间隔发送的同步请求,并根据该同步请求向客户端返回未同步的数据。
本发明实施例还提供了一种通信系统,如图2所示,包括上述的服务器200以及客户端100。其中,服务器200进一步包括通信接口210、通信控制器220、存储单元230以及链接管理器240。具体地,每个部件的工作原理可参照上述关于服务器的实施例中的描述,此处不再赘述。
本发明实施例提供的通信系统,除了可以由服务器利用长连接通道向客户端精准推送数据之外,还可以由客户端利用长连接通道与服务器之间同步数据,例如,客户端可以采用轮询请求的方式来同步服务器端的数据,具体地,客户端可以每隔一定的时间间隔(如1分钟)向服务器发送同步请求,服务器每次接收到同步请求后将未同步的数据返回给客户端。为了缩短数据的延迟,可以将客户端发送同步请求的时间间隔设置得尽可能小。
由此可见,通过本发明实施例提供的服务器及通信系统,通过客户端发送请求消息,服务器通过自身维护的客户端信息列表向客户端返回响应消息的方式,可以使客户端及时了解与服务器之间的长连接的状态,并在长连接断开时及时建立连接。而且,服务器还可以通过该长连接向客户端传输消息,且可根据客户端正在运行的应用来有针对性的推送数据,因此,更加符合用户需求。
本发明可以特别地应用于基于诸如HTTP之类的无状态通信协议的网络应用场景中,尤其可以应用于基于web的应用场景中。在基于web的应用场景中,客户端为网络浏览器,特别是网络浏览器中的网页及其相关javascript脚本,而服务器为处理来自网页的请求的web服务器。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的文件至宿主文件中的捆绑装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
Claims (15)
1.一种在服务器处和客户端进行通信的方法,包括以下步骤:
接收到客户端发送的请求消息,获取包含在所述请求消息中的所述客户端的客户端标识;
确定客户端信息列表中是否存储了与所述客户端标识相对应的长连接通道标识,如果存储了长连接通道标识,则向所述客户端返回用于指示长连接已建立的第一响应消息;如果未存储长连接通道标识,则为所述客户端分配一个长连接通道,将所述长连接通道的长连接通道标识以及所述客户端标识存入所述客户端信息列表中,并向所述客户端返回用于指示长连接未建立的第二响应消息,其中,所述第二响应消息中包含所述长连接通道标识,用于指示客户端根据所述长连接通道标识与所述服务器建立长连接;以及
根据与客户端之间建立的长连接,在服务器和客户端之间传输消息。
2.如权利要求1所述的方法,其中所述请求信息还包括当前在所述客户端上运行的应用的应用标识,以及所述在服务器和客户端之间传输消息的步骤包括将该应用相关的消息传输到客户端。
3.如权利要求1所述的方法,所述客户端每隔预设的第一时间间隔向服务器发送所述请求消息。
4.如权利要求1所述的方法,还包括步骤:在所述客户端信息列表中与所述客户端标识相关联地存储每次接收到所述客户端发送的请求消息的时间。
5.如权利要求3所述的方法,还包括步骤:每隔预设的第二时间间隔对所述客户端信息列表中存储的客户端发送请求消息的时间间隔进行检测,将与在所述第二时间间隔内没有发送请求消息的客户端对应的长连接通道标识删除,并断开所述长连接通道标识对应的长连接通道,其中,所述第二时间间隔大于所述第一时间间隔。
6.如权利要求1-5中任一个所述的方法,还包括步骤:所述客户端每隔预设的第三时间间隔向服务器发送同步请求,所述服务器接收到所述同步请求后向所述客户端返回未同步的数据。
7.如权利要求1-5中任一个所述的方法,其中所述客户端为网络浏览器,以及所述服务器为web服务器。
8.一种适于和客户端进行通信的服务器,包括:
存储单元,适于存储客户端信息列表;
通信接口,适于接收到客户端发送的请求消息,获取包含在所述请求消息中的所述客户端的客户端标识;
通信控制器,适于确定客户端信息列表中是否存储了与所述客户端标识相对应的长连接通道标识,如果存储了长连接通道标识,则控制所述通信接口向所述客户端返回指示长连接已建立的第一响应消息;如果未存储长连接通道标识,则为所述客户端分配一个长连接通道,将所述长连接通道的长连接通道标识以及所述客户端标识存入所述客户端信息列表中,并控制所述通信接口向所述客户端返回指示长连接未建立的第二响应消息,其中,所述第二响应消息中包含所述长连接通道标识,该长连接通道标识指示客户端根据所述长连接通道标识与所述服务器建立长连接;
其中,所述通信接口还根据与客户端之间建立的长连接,在服务器和客户端之间传输消息。
9.如权利要求8所述的服务器,所述请求信息还包括当前在所述客户端上运行的应用的应用标识,则所述通信接口具体用于将该应用相关的消息传输到客户端。
10.如权利要求8所述的服务器,其中,所述客户端每隔预设的第一时间间隔向服务器发送所述请求消息。
11.如权利要求8所述的服务器,所述存储单元还适于在所述客户端信息列表中与所述客户端标识相关联地存储每次接收到所述客户端发送的请求消息的时间。
12.如权利要求10所述的服务器,进一步包括:
链接管理器,适于每隔预设的第二时间间隔对所述客户端信息列表中存储的客户端发送请求消息的时间间隔进行检测,将与在所述第二时间间隔内没有发送请求消息的客户端对应的长连接通道标识删除,并断开所述长连接通道标识对应的长连接通道,其中,所述第二时间间隔大于所述第一时间间隔。
13.如权利要求8-12中任一个所述的服务器,还包括同步单元,其接收所述客户端每隔预设的第三时间间隔发送的同步请求,并根据所述同步请求向客户端返回未同步的数据。
14.如权利要求8-12中任一个所述的服务器,其中所述客户端为网络浏览器,以及所述服务器为web服务器。
15.一种通信系统,包括:客户端以及如上述权利要求8-14中任一个所述的服务器。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510623793.7A CN105337961B (zh) | 2012-11-02 | 2012-11-02 | 和客户端进行通信的方法以及服务器 |
CN201210433894.4A CN102932352B (zh) | 2012-11-02 | 2012-11-02 | 和客户端进行通信的方法以及服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210433894.4A CN102932352B (zh) | 2012-11-02 | 2012-11-02 | 和客户端进行通信的方法以及服务器 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510623793.7A Division CN105337961B (zh) | 2012-11-02 | 2012-11-02 | 和客户端进行通信的方法以及服务器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102932352A CN102932352A (zh) | 2013-02-13 |
CN102932352B true CN102932352B (zh) | 2015-11-25 |
Family
ID=47647054
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510623793.7A Expired - Fee Related CN105337961B (zh) | 2012-11-02 | 2012-11-02 | 和客户端进行通信的方法以及服务器 |
CN201210433894.4A Active CN102932352B (zh) | 2012-11-02 | 2012-11-02 | 和客户端进行通信的方法以及服务器 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510623793.7A Expired - Fee Related CN105337961B (zh) | 2012-11-02 | 2012-11-02 | 和客户端进行通信的方法以及服务器 |
Country Status (1)
Country | Link |
---|---|
CN (2) | CN105337961B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105337961A (zh) * | 2012-11-02 | 2016-02-17 | 北京奇虎科技有限公司 | 和客户端进行通信的方法以及服务器 |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103475567B (zh) * | 2013-07-31 | 2016-09-14 | 华为软件技术有限公司 | 数据传输方法、装置、设备及系统 |
CN104320447B (zh) * | 2014-10-15 | 2017-12-19 | 新疆同晨信息技术有限公司 | 一种中小型云存储数据同步方法及计算机可读介质、系统 |
CN104468594B (zh) * | 2014-12-15 | 2018-04-27 | 北京奇安信科技有限公司 | 一种数据请求的方法、装置及系统 |
CN105991689B (zh) * | 2015-02-03 | 2020-02-28 | 阿里巴巴集团控股有限公司 | Http报文处理方法及系统、http客户端及服务器 |
CN106453231B (zh) * | 2016-08-08 | 2020-08-04 | 腾讯科技(深圳)有限公司 | 信令获取、传输方法和装置 |
CN106331093A (zh) * | 2016-08-23 | 2017-01-11 | 惠州市拉维尼科技有限公司 | 数据发送方法 |
CN106331094A (zh) * | 2016-08-23 | 2017-01-11 | 惠州市拉维尼科技有限公司 | 转发方法 |
CN106713455A (zh) * | 2016-12-22 | 2017-05-24 | 北京锐安科技有限公司 | 一种处理客户端请求的系统、方法及装置 |
CN106790203A (zh) * | 2017-01-03 | 2017-05-31 | 上海金融云服务集团安全技术有限公司 | 一种基于浏览器的终端动态锁定标记方法 |
CN107040581B (zh) * | 2017-01-25 | 2021-03-02 | 腾讯科技(深圳)有限公司 | 一种网络包发送方法、装置、服务器及系统 |
CN108540515B (zh) * | 2017-03-06 | 2022-04-15 | 腾讯科技(深圳)有限公司 | 一种数据处理方法及服务器 |
CN109660584A (zh) * | 2017-10-12 | 2019-04-19 | 阿里巴巴集团控股有限公司 | 一种客户端与服务器建立长连接的方法及通信方法与通信系统 |
CN108173910B (zh) * | 2017-12-18 | 2021-06-22 | 网宿科技股份有限公司 | 一种管理应用的方法和系统 |
CN108696598B (zh) * | 2018-07-26 | 2021-04-13 | 廊坊新奥智能科技有限公司 | 一种微服务架构下将无状态服务接收到的消息通过长连接透传的方法和装置 |
CN110321298B (zh) * | 2019-06-21 | 2021-10-22 | 北京奇艺世纪科技有限公司 | 一种时间间隔确定方法、装置、电子设备及介质 |
CN112019374A (zh) * | 2020-07-15 | 2020-12-01 | 上海趣蕴网络科技有限公司 | 一种网络通信优化方法和系统 |
CN113051139A (zh) * | 2021-04-30 | 2021-06-29 | 中国银行股份有限公司 | 一种预警信息处理方法、系统、服务器和客户端 |
CN113055499B (zh) * | 2021-05-31 | 2021-08-31 | 云和恩墨(北京)信息技术有限公司 | 数据的传输方法及系统 |
CN113420941A (zh) * | 2021-07-16 | 2021-09-21 | 湖南快乐阳光互动娱乐传媒有限公司 | 用户行为的风险预测方法及装置 |
CN113923249A (zh) * | 2021-10-12 | 2022-01-11 | 工银科技有限公司 | 一种高性能网络长连接建立方法及装置 |
CN114040005A (zh) * | 2021-10-18 | 2022-02-11 | 中国联合网络通信集团有限公司 | 一种数据传输方法、装置及存储介质 |
CN114157624B (zh) * | 2021-11-25 | 2023-10-24 | 上海浦东发展银行股份有限公司 | 即时通讯的链路连接方法、装置、设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101431669A (zh) * | 2008-12-10 | 2009-05-13 | 北京中星微电子有限公司 | 视频监控系统及该系统中建立媒体流传输连接的控制方法 |
CN101699911A (zh) * | 2007-07-03 | 2010-04-28 | 卢苇 | 一种移动即时通信图片压缩方法 |
CN102035880A (zh) * | 2010-11-02 | 2011-04-27 | 中兴通讯股份有限公司 | 一种保持连接的方法及装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020165907A1 (en) * | 2001-04-13 | 2002-11-07 | Matthew Dornquast | System and method for real time interactive network communications |
CN105337961B (zh) * | 2012-11-02 | 2018-09-04 | 北京奇虎科技有限公司 | 和客户端进行通信的方法以及服务器 |
-
2012
- 2012-11-02 CN CN201510623793.7A patent/CN105337961B/zh not_active Expired - Fee Related
- 2012-11-02 CN CN201210433894.4A patent/CN102932352B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101699911A (zh) * | 2007-07-03 | 2010-04-28 | 卢苇 | 一种移动即时通信图片压缩方法 |
CN101431669A (zh) * | 2008-12-10 | 2009-05-13 | 北京中星微电子有限公司 | 视频监控系统及该系统中建立媒体流传输连接的控制方法 |
CN102035880A (zh) * | 2010-11-02 | 2011-04-27 | 中兴通讯股份有限公司 | 一种保持连接的方法及装置 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105337961A (zh) * | 2012-11-02 | 2016-02-17 | 北京奇虎科技有限公司 | 和客户端进行通信的方法以及服务器 |
CN105337961B (zh) * | 2012-11-02 | 2018-09-04 | 北京奇虎科技有限公司 | 和客户端进行通信的方法以及服务器 |
Also Published As
Publication number | Publication date |
---|---|
CN105337961A (zh) | 2016-02-17 |
CN102932352A (zh) | 2013-02-13 |
CN105337961B (zh) | 2018-09-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102932352B (zh) | 和客户端进行通信的方法以及服务器 | |
CN102904903B (zh) | 通信系统和通信方法 | |
CN101656617B (zh) | 广告推送方法、装置和系统 | |
US9722862B2 (en) | Computer system to support failover in an event stream processing system | |
CN103765858B (zh) | 用于在用户在通信网络内的浏览期间监视用户的方法和服务器 | |
CN102402558A (zh) | 一种提供包含网页地址的消息的方法和系统 | |
CN104767775A (zh) | 网页应用消息推送方法及系统 | |
CN103167017A (zh) | Web轮询方法、装置及系统 | |
CN104580085A (zh) | 业务数据更新方法、系统、客户端及服务器 | |
CN103167031A (zh) | Web应用之间的通信 | |
CN108880972B (zh) | 一种信息处理方法、服务器及终端 | |
CN104468852A (zh) | 客户端选择ip链接地址的方法、装置及系统 | |
CN101883079B (zh) | 在互联网中用于加速点播多媒体内容的方法与装置 | |
CN103581249A (zh) | 一种信息推送方法、系统及客户端 | |
JP2005530258A (ja) | クライアント・デバイスをサーバからリフレッシュする間に再同期化するためのシステムおよび方法 | |
US20180248935A1 (en) | Enhanced reliability for information services | |
CN102037711A (zh) | 在对等网络中限制存储消息 | |
CN102970185B (zh) | 网络应用的运行状态监控方法、客户端设备及通信系统 | |
CN104301423A (zh) | 一种发送心跳报文的方法、装置及系统 | |
CN101610289A (zh) | 下载数据的方法、装置和系统及节点 | |
CN101291273B (zh) | 一种网页间通信的方法、系统及在音乐搜索中的应用 | |
CN103731506A (zh) | 一种内容注入方法、第一业务服务节点和内容分发网络 | |
CN102970184A (zh) | 网络应用的运行状态监控方法和应用服务器 | |
CN105897829A (zh) | 信息共享、信息推送的方法及装置 | |
CN117555685A (zh) | 资源状态同步方法、控制台、平台和系统 |
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 | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20220727 Address after: Room 801, 8th floor, No. 104, floors 1-19, building 2, yard 6, Jiuxianqiao Road, Chaoyang District, Beijing 100015 Patentee after: BEIJING QIHOO TECHNOLOGY Co.,Ltd. Address before: 100088 room 112, block D, 28 new street, new street, Xicheng District, Beijing (Desheng Park) Patentee before: BEIJING QIHOO TECHNOLOGY Co.,Ltd. Patentee before: Qizhi software (Beijing) Co.,Ltd. |