CN107426081A - 一种实时消息传输方法及系统 - Google Patents
一种实时消息传输方法及系统 Download PDFInfo
- Publication number
- CN107426081A CN107426081A CN201710251823.5A CN201710251823A CN107426081A CN 107426081 A CN107426081 A CN 107426081A CN 201710251823 A CN201710251823 A CN 201710251823A CN 107426081 A CN107426081 A CN 107426081A
- Authority
- CN
- China
- Prior art keywords
- client
- identifier
- real
- time messages
- server end
- 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.)
- Pending
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/04—Real-time or near real-time messaging, e.g. instant messaging [IM]
-
- 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/50—Network services
- H04L67/55—Push-based network services
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer And Data Communications (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明属于消息传输技术领域,具体涉及一种实时消息传输方法及系统。该实时消息传输方法,用于服务器端,其包括以下步骤:响应客户端的连接请求,与相应客户端进行连接;所述客户端包括发送客户端和接收客户端;接收所述发送客户端发送的实时消息,所述发送客户端发送的实时消息包括与所述接收客户端相对应的标识符;根据与所述接收客户端相对应的标识符,将接收到的所述发送客户端发送的实时消息主动推送给所述接收客户端。该方法可用于客户端之间的实时消息传输,其可以使服务器端将实时消息主动推送给相应的接收客户端,可以很大程度地减轻服务器端的压力。
Description
技术领域
本发明属于消息传输技术领域,具体涉及一种实时消息传输方法及系统。
背景技术
现有技术中的客户端之间的即时通信,有些是客户端按照某个时间间隔不断地向服务器端发送请求,即每隔一小段时间就发送一个请求到服务器端,服务器端返回最新数据,然后客户端根据获得的数据来更新界面,这样就间接实现了即时通信;该方法对服务器端的压力较大,且通常情况下数据都是没有发生改变的,这样导致浪费了大量的带宽流量。
另外,还可以使用长轮询(long-polling)方式进行即时消息的发送,这种方式是客户端发送一个请求到服务器端,服务器端查看客户端请求的数据是否发生了变化,如果发生变化则立即响应返回,否则保持这个连接并定期检查最新数据,直到发生了数据更新或连接超时。
现有技术虽然可以实现即时通信,但均是客户端主动发起请求获取信息,服务器端根据客户端的请求被动地将最新消息传输给客户端,这很容易导致消息传输的不及时;若客户端频繁地向服务器端发送请求,则很容易造成在没有最新消息时,服务器端也得进行回应,浪费了大量的带宽流量,增加了服务器端的压力,也增加了客户端的压力;若使用长轮询方式进行即时消息的发送,虽然一定程度上降低了带宽流量的浪费,但是需要服务器端频繁地查询是否有最新消息,这样很大程度地增加了服务器端的压力。
发明内容
为了解决上述的技术问题,本发明提供一种实时消息传输方法及系统,该方法可用于客户端之间的实时消息传输,其可以使服务器端将实时消息主动推送给相应的接收客户端。
本发明提供一种实时消息传输方法,用于服务器端,其特征在于,包括以下步骤:
响应客户端的连接请求,与相应客户端进行连接;所述客户端包括发送客户端和接收客户端;
接收所述发送客户端发送的实时消息,所述发送客户端发送的实时消息包括与所述接收客户端相对应的标识符;
根据与所述接收客户端相对应的标识符,将接收到的所述发送客户端发送的实时消息主动推送给所述接收客户端。
所述实时消息传输方法,优选的是,所述与相应客户端进行连接包括以下步骤:
接收客户端发送的请求连接信息;
生成该服务器端与该客户端之间的连接对象;
接收该客户端发送的请求获取用户标识信息,所述该客户端发送的请求获取用户标识信息包括该客户端的房间标识符;
根据该客户端的房间标识符生成与该客户端相对应的用户标识符,且将所述用户标识符与所述连接对象进行绑定;
根据该客户端的房间标识符,将所述用户标识符保存到标识符列表中的相对应的用户标识符列表中,且每个用户标识符列表都有对应的房间标识符;所述标识符列表包括与该服务器端相连接的全部用户客户端相对应的所有用户标识符,且所述标识符列表中包括群发标识符;
将所述用户标识符发送给该客户端。
所述实时消息传输方法,其中,所述将接收到的所述发送客户端发送的实时消息主动推送给所述接收客户端,可以包括以下步骤:
判断发送客户端发送的实时消息中的与所述接收客户端相对应的标识符的类别;
如果发送客户端发送的实时消息中的与所述接收客户端相对应的标识符是用户标识符,则判断该用户标识符是否在标识符列表中;
如果该用户标识符在所述标识符列表中,则根据该用户标识符查找该服务器端与该接收客户端之间的连接对象;
通过该服务器端与该接收客户端之间的连接对象,将接收到的所述发送客户端发送的实时消息主动推送给与该服务器端相连接的该接收客户端。
所述实时消息传输方法,所述将接收到的所述发送客户端发送的实时消息主动推送给所述接收客户端还可以包括以下步骤:
如果发送客户端发送的实时消息中的与所述接收客户端相对应的标识符是房间标识符,则判断该房间标识符是否在标识符列表中;
如果该房间标识符在所述标识符列表中,则根据该房间标识符查找与该房间标识符相对应的用户标识符列表中的全部用户标识符;
根据与该房间标识符相对应的用户标识符列表中的全部用户标识符,查找该服务器端与该房间内的全部用户客户端之间的所有连接对象;
通过该服务器端与该房间内的全部用户客户端之间的所有连接对象,将接收到的所述发送客户端发送的实时消息主动推送给与该服务器端相连接的该房间内的全部用户客户端。
进一步地,所述的实时消息传输方法,所述将接收到的所述发送客户端发送的实时消息主动推送给所述接收客户端还可以包括以下步骤:
如果发送客户端发送的实时消息中的与所述接收客户端相对应的标识符是群发标识符,则判断该群发标识符是否在所述标识符列表中;
如果该群发标识符在所述标识符列表中,则根据该群发标识符查找所述标识符列表中的全部房间标识符相对应的所有用户标识符列表中的全部用户标识符;
根据所述标识符列表中的全部房间标识符相对应的所有用户标识符列表中的全部用户标识符,查找该服务器端与对应的全部用户客户端之间的所有连接对象;
通过该服务器端与对应的全部用户客户端之间的所有连接对象,将接收到的所述发送客户端发送的实时消息主动推送给与该服务器端相连接的全部用户客户端。
本发明还提供一种实时消息传输系统,用于服务器端,其包括:
连接模块,用于响应客户端的连接请求,与相应客户端进行连接;所述客户端包括发送客户端和接收客户端;
接收模块,用于接收所述发送客户端发送的实时消息,所述发送客户端发送的实时消息包括与所述接收客户端相对应的标识符;
主动推送模块,用于根据与所述接收客户端相对应的标识符,将接收到的所述发送客户端发送的实时消息主动推送给所述接收客户端。
所述实时消息传输系统,优选的是,所述连接模块包括:
接收单元,用于接收客户端发送的请求连接信息;
生成单元,用于生成该服务器端与该客户端之间的连接对象;
所述接收单元,还用于接收该客户端发送的请求获取用户标识信息,所述该客户端发送的请求获取用户标识信息包括该客户端的房间标识符;
绑定单元,用于根据该客户端的房间标识符生成与该客户端相对应的用户标识符,且将所述用户标识符与所述连接对象进行绑定;
保存单元,用于根据该客户端的房间标识符,将所述用户标识符保存到标识符列表中的相对应的用户标识符列表中,且每个用户标识符列表都有对应的房间标识符;所述标识符列表包括与该服务器端相连接的全部用户客户端相对应的所有用户标识符,且所述标识符列表中包括群发标识符;
第一发送单元,用于将所述用户标识符发送给该客户端。
所述实时消息传输系统,其中,所述主动推送模块可以包括:
第一判断单元,用于判断发送客户端发送的实时消息中的与所述接收客户端相对应的标识符的类别;
第二判断单元,用于如果发送客户端发送的实时消息中的与所述接收客户端相对应的标识符是用户标识符,则判断该用户标识符是否在标识符列表中;
第一查找单元,用于如果该用户标识符在所述标识符列表中,则根据该用户标识符查找该服务器端与该接收客户端之间的连接对象;
第二发送单元,用于通过该服务器端与该接收客户端之间的连接对象,将接收到的所述发送客户端发送的实时消息主动推送给与该服务器端相连接的该接收客户端。
进一步地,所述主动推送模块还可以包括:
第三判断单元,用于如果发送客户端发送的实时消息中的与所述接收客户端相对应的标识符是房间标识符,则判断该房间标识符是否在标识符列表中;
第二查找单元,用于如果该房间标识符在所述标识符列表中,则根据该房间标识符查找与该房间标识符相对应的用户标识符列表中的全部用户标识符;
第三查找单元,用于根据与该房间标识符相对应的用户标识符列表中的全部用户标识符,查找该服务器端与该房间内的全部用户客户端之间的所有连接对象;
第三发送单元,用于通过该服务器端与该房间内的全部用户客户端之间的所有连接对象,将接收到的所述发送客户端发送的实时消息主动推送给与该服务器端相连接的该房间内的全部用户客户端。
进一步地,所述主动推送模块还可以包括:
第四判断单元,用于如果发送客户端发送的实时消息中的与所述接收客户端相对应的标识符是群发标识符,则判断该群发标识符是否在所述标识符列表中;
第四查找单元,用于如果该群发标识符在所述标识符列表中,则根据该群发标识符查找所述标识符列表中的全部房间标识符相对应的所有用户标识符列表中的全部用户标识符;
第五查找单元,用于根据所述标识符列表中的全部房间标识符相对应的所有用户标识符列表中的全部用户标识符,查找该服务器端与对应的全部用户客户端之间的所有连接对象;
第四发送单元,用于通过该服务器端与对应的全部用户客户端之间的所有连接对象,将接收到的所述发送客户端发送的实时消息主动推送给与该服务器端相连接的全部用户客户端。
本发明实施例中的实时消息传输方法,可以实现将实时消息主动推送给相应的接收客户端,这能够使服务器端接收到最新消息后,及时地将最新消息发送出去,保证了消息传输的及时性;同时,服务器端不需要在没有最新消息时回应客户端,也不用频繁地查询是否有最新消息,因此,可以很大程度地减轻服务器端的压力;另外,该方法也可以很大程度地减轻了接收客户端的压力。
附图说明
图1为本发明一优选实施例中的实时消息传输方法的流程图。
图2为基于图1所示的优选实施例中的实时消息传输方法的部分流程图。
图3为基于图1所示的优选实施例中的实时消息传输方法的信息传输框架图示。
图4为本发明一优选实施例中的实时消息传输系统的结构图。
图5为本发明另一优选实施例中的实时消息传输系统的结构图。
图6为本发明另一优选实施例中的实时消息传输系统的结构图。
图7为本发明另一优选实施例中的实时消息传输系统的结构图。
具体实施方式
为了更加清楚地了解本发明的技术方案,下面结合附图对本发明进行详细介绍。本发明的实施例具有示例性的作用,本领域技术人员在本发明实施例基础上做出的无实质性的改进,都应属于本发明的保护范围。
如图1所示的实时消息传输方法,用于服务器端,其包括以下步骤:
S101:响应客户端的连接请求,与相应客户端进行连接;所述客户端包括发送客户端和接收客户端。
当客户端用户想要与其他客户端用户进行实时通讯时,可以通过相应客户端向服务器端发出连接请求,以与服务器端进行连接,然后通过服务器端实现与其他客户端的实时消息传输。具体可以是,客户端通过websocket(基于TCP的全双工通信协议)协议与支持websocket协议的服务器端进行连接。
所述客户端可以是浏览器端或者其他可以进行即时通讯的应用程序。所述发送客户端,是指发送实时消息的客户端;所述接收客户端,是指接收实时消息的客户端。在这里只是为了作区别性说明,实际的实时消息传输过程中,发送客户端也可以接收其他客户端的实时消息,接收客户端也可以发送实时消息。
S102:接收所述发送客户端发送的实时消息,所述发送客户端发送的实时消息包括与所述接收客户端相对应的标识符。
服务器端与发送客户端连接后,可以接收发送客户端发送的实时消息。所述与所述接收客户端相对应的标识符,可以是用户标识符,此时的接收客户端是与该用户标识符对应的客户端,且此时的用户标识符可以是与一个客户端相对应的一个用户标识符,也可以是与两个或者两个以上的客户端分别相对应的多个用户标识符。所述用户标识符,是在该服务器端上用于标记客户端的标识符,且客户端与对应的用户标识符是一一对应的。
所述与所述接收客户端相对应的标识符,也可以是房间标识符,此时的接收客户端是与该房间标识符对应的房间内的全部客户端,且此时的房间标识符可以是与一个房间相对应的一个房间标识符,也可以是与两个或者两个以上的房间分别相对应的多个房间标识符。所述房间标识符,是在该服务器端上用于标记房间的标识符,且客户端与对应的房间标识符是一一对应的。这里的房间,是指用于网络聊天的聊天室。
所述与所述接收客户端相对应的标识符,也可以是群标识符,此时的接收客户端是与该群标识符对应的全部房间内的所有客户端。所述群标识符,是在该服务器端上用于标记全部房间内的所有客户端的标识符,且通常只有一个群标识符。
S103:根据与所述接收客户端相对应的标识符,将接收到的所述发送客户端发送的实时消息主动推送给所述接收客户端。
服务器端接收到发送客户端的实时消息后,不需要所述接收客户端的请求获取信息,即可以主动根据与所述接收客户端相对应的标识符,将接收到的所述发送客户端发送的实时消息主动推送给所述接收客户端。
本发明实施例中的实时消息传输方法,可以实现将实时消息主动推送给相应的接收客户端,这能够使服务器端接收到最新消息后,及时地将最新消息发送出去,保证了消息传输的及时性;同时,服务器端不需要在没有最新消息时回应客户端,也不用频繁地查询是否有最新消息,因此,可以很大程度地减轻服务器端的压力;另外,该方法也可以很大程度地减轻了接收客户端的压力。
在图1所示实时消息传输方法的基础上,如图2所示的方法,所述与相应客户端进行连接包括以下步骤:
S201:接收客户端发送的请求连接信息。
若客户端需要与服务器端进行连接,则需要向服务器端发送请求连接信息。
S202:生成该服务器端与该客户端之间的连接对象。
服务器端收到客户端发送的请求连接信息后,生成相应的连接对象。所述连接对象可用于该服务器端与该客户端之间相互传输信息,即是:当服务器端需要将实时消息传输给客户端时,可以调用该服务器端与该客户端之间的连接对象,通过该连接对象将实时消息及时传输给该客户端;当客户端需要上传实时消息到相应服务器端时,也可以调用它们之间的连接对象,通过该连接对象将该实时消息传输给该服务器端。另外,通过该连接对象,在同一时刻,能够实现客户端到服务器端和服务器端到客户端的实时消息传输。
S203:接收该客户端发送请求获取用户标识信息,所述该客户端发送的请求获取用户标识信息包括该客户端的房间标识符。
生成服务器端与客户端之间的连接对象之后,该客户端和服务器端已经连接了。为了区别每个客户端及其对应的连接对象,方便服务器及时传输消息,需要对每个客户端及每条连接对象进行唯一标识。因此,客户端需要发送请求获取用户标识信息,以获取相应的用户标识符。所述房间标识符,是用于标记该客户端所在的房间。
S204:根据该客户端的房间标识符生成与该客户端相对应的用户标识符,且将所述用户标识符与所述连接对象进行绑定。
服务器端收到客户端发送请求获取用户标识信息后,会根据该客户端的房间标识符生成与该客户端相对应的用户标识符。
将所述用户标识符与所述连接对象进行绑定,是将与同一客户端对应的用户标识符和连接对象进行绑定,以便于服务器端进行管理。
S205:根据该客户端的房间标识符,将所述用户标识符保存到标识符列表中的相对应的用户标识符列表中,且每个用户标识符列表都有对应的房间标识符;所述标识符列表包括与该服务器端相连接的全部用户客户端相对应的所有用户标识符,且所述标识符列表中包括群发标识符。
服务器端收到客户端的房间标识符时,通常是先查询该房间标识符对应的用户标识符列表,若没有对应的用户标识符列表,则服务器端会为该房间标识符创建对应的用户标识符列表。
这里的标识符列表包括该服务器端上的全部用户标识符列表。群发标识符是与标识符列表相对应的,当服务器端需要将消息发送给全部客户端时,可以依据该群发标识符查询所有的用户标识符,进而完成群发。
服务器端根据该客户端的房间标识符生成与该客户端相对应的用户标识符后,会将该用户标识符保存到标识符列表中的相对应的用户标识符列表中,以便于后续的查询。
S206:将所述用户标识符发送给该客户端。
服务器端生成客户端的用户标识符后,可以将其发送给该客户端。
本发明实施例的实时消息传输方法,可以在服务器端与客户端的连接后,生成与该客户端对应的连接对象和用户标识符;连接对象可以用于服务器端与客户端之间的数据传输,在同一时刻能够实现客户端到服务器端和服务器端到客户端的数据发送,更是便于服务器端主动将实时消息推送给该客户端,缩短了实时消息传输的时间,也减少了服务器端的压力。用户标识符与该连接对象绑定后,可便于服务器端对连接对象的管理,以至于更及时地传输实时消息。
在图1所示的实时消息传输方法的基础上,所述将接收到的所述发送客户端发送的实时消息主动推送给所述接收客户端,包括以下步骤:
S301:判断发送客户端发送的实时消息中的与所述接收客户端相对应的标识符的类别。
这里的标识符的类别包括用户标识符、房间标识符、群标识符。通过判断标识符的类别,可以分辨出该发送客户端发送的实时消息是要发送给某个用户或者某个房间内的所有用户或者是所有房间内的全部用户(即群发)。
S302:如果发送客户端发送的实时消息中的与所述接收客户端相对应的标识符是用户标识符,则判断该用户标识符是否在标识符列表中。
判断该用户标识符是否在标识符列表中,是为了判断出该用户标识符对应的客户端是否与该服务器端建立连接。如果没有建立连接,则应先建立连接。
S303:如果该用户标识符在所述标识符列表中,则根据该用户标识符查找该服务器端与该接收客户端之间的连接对象。
如果该用户标识符在所述标识符列表中,则说明该用户标识符对应的客户端已经与该服务器端建立连接,需要找到对应的连接对象,以便于将该实时消息发送给相应的接收客户端。
S304:通过该服务器端与该接收客户端之间的连接对象,将接收到的所述发送客户端发送的实时消息主动推送给与该服务器端相连接的该接收客户端。
本发明实施例的传输方法,可以使服务器端通过相应的连接对象将实时消息更快速地传输给与该服务器端相连接的该接收客户端。由于是通过服务器端主动推送的,这种实时消息的传输只需要客户端与服务器端建立一次连接,不需要每传输一条消息都与服务器端建立一次连接,同时,服务器端不需要在没有最新消息时回应客户端,也不用频繁地查询是否有最新消息,因此,可以很大程度地减轻服务器端的压力,很大程度地提高实时消息的传输效率。
在图1所示的实时消息传输方法的基础上,所述将接收到的所述发送客户端发送的实时消息主动推送给所述接收客户端还包括以下步骤:
S401:如果发送客户端发送的实时消息中的与所述接收客户端相对应的标识符是房间标识符,则判断该房间标识符是否在标识符列表中。
如果标识符是房间标识符,说明发送客户端是要将该实时消息发送给其所在房间的每个客户端。判断该房间标识符是否在标识符列表中,是为了判断与该房间标识符相对应的聊天室是否在该服务器端上创建。如果没有创建,则需要创建该聊天室,即在标识符列表中创建新的用户标识符列表,并用该房间标识符标记该用户标识符列表。
S402:如果该房间标识符在所述标识符列表中,则根据该房间标识符查找与该房间标识符相对应的用户标识符列表中的全部用户标识符。
如果该房间标识符在所述标识符列表中,则说明服务器端上存在与该房间标识符相对应的用户标识符列表,根据该用户标识符列表其中的全部用户标识符查找出来。
S403:根据与该房间标识符相对应的用户标识符列表中的全部用户标识符,查找该服务器端与该房间内的全部用户客户端之间的所有连接对象。
S404:通过该服务器端与该房间内的全部用户客户端之间的所有连接对象,将接收到的所述发送客户端发送的实时消息主动推送给与该服务器端相连接的该房间内的全部用户客户端。
每一个连接对象对应一个客户端,服务器端查找到了该房间内的全部用户客户端的所有连接对象,即可将该实时消息发送给该房间内的每个客户端。
本发明实施例的传输方法,可以使服务器端通过相应的连接对象将实时消息更快速地传输给与该服务器端相连接的该房间内的全部用户客户端。由于是通过服务器端主动推送的,这种实时消息的传输只需要客户端与服务器端建立一次连接,不需要每传输一条消息都与服务器端建立一次连接,同时,服务器端不需要在没有最新消息时回应客户端,也不用频繁地查询是否有最新消息,因此,可以很大程度地减轻服务器端的压力,很大程度地提高实时消息的传输效率。
在图1所示的实时消息传输方法的基础上,所述将接收到的所述发送客户端发送的实时消息主动推送给所述接收客户端还包括以下步骤:
S501:如果发送客户端发送的实时消息中的与所述接收客户端相对应的标识符是群发标识符,则判断该群发标识符是否在所述标识符列表中。
如果标识符是群标识符,说明发送客户端是要将该实时消息发送给与该服务器端连接的相应的每个客户端。判断该群发标识符是否在标识符列表中,是为了判断该群发标识符是否与服务器端上的群标识符相一致。
S502:如果该群发标识符在所述标识符列表中,则根据该群发标识符查找所述标识符列表中的全部房间标识符相对应的所有用户标识符列表中的全部用户标识符。
S503:根据所述标识符列表中的全部房间标识符相对应的所有用户标识符列表中的全部用户标识符,查找该服务器端与对应的全部用户客户端之间的所有连接对象。
S504:通过该服务器端与对应的全部用户客户端之间的所有连接对象,将接收到的所述发送客户端发送的实时消息主动推送给与该服务器端相连接的全部用户客户端。
本发明实施例的传输方法,可以使服务器端通过相应的连接对象将实时消息更快速地传输给与该服务器端相连接的相应的每个客户端。由于是通过服务器端主动推送的,这种实时消息的传输只需要客户端与服务器端建立一次连接,不需要每传输一条消息都与服务器端建立一次连接,同时,服务器端不需要在没有最新消息时回应客户端,也不用频繁地查询是否有最新消息,因此,可以很大程度地减轻服务器端的压力,很大程度地提高实时消息的传输效率。
通常,客户端与服务器连接后,服务器端需要对该客户端进行存活心跳检测,因此该客户端应定时向服务器端发送存活信息。如果服务器端在预定时间内(比如:60秒)没有收到来自该客户端的存活信息,或者,服务器端收到客户端发送的结束传输信息,则服务器端将该客户端的用户标识符与其相对应的连接对象进行解除绑定,并将相应的用户标识符列表中的该客户端的用户标识符移除。所述存活心跳检测是为了判断服务器端与移动端或浏览器端是否还存在连接。
如图3所示移动端与浏览器端的实时消息传输,移动端(这里指智能手机上用于交流的客户端)与浏览器端(这里指个人计算机上的浏览器客户端)之间需要进行实时消息传输,该方法包括以下步骤:
S601:移动端、浏览器端分别发送请求连接信息给服务器端;
S602:服务器端生成该服务器端与该移动端之间的第一连接对象,并生成该服务器端与该浏览器端之间的第二连接对象,然后分别发送连接成功信息给该移动端和该浏览器端,以告知该移动端和该浏览器端连接成功;
S603:移动端、浏览器端分别接收服务器端发送的连接成功信息后,得知其已与服务器端连接,然后移动端、浏览器端分别发送请求获取用户标识信息给该服务器端,所述该客户端发送的请求获取用户标识信息包括该客户端的房间标识符;
S604:服务器端接收移动端、浏览器端分别发送的请求获取用户标识信息,并根据该移动端对应的房间标识符生成与该移动端相对应的第一用户标识符,根据该浏览器端对应的房间标识符生成与该浏览器端相对应的第二用户标识符,且将所述第一用户标识符与所述第一连接对象进行绑定,将所述第二用户标识符与所述第二连接对象进行绑定;
S605:服务器端根据该移动端的房间标识符,将第一用户标识符保存到相对应的用户标识符列表中;根据该浏览器端的房间标识符,将第二用户标识符保存到相对应的用户标识符列表中;
S606:服务器端将第一用户标识符发送给该移动端;将第二用户标识符发送给该浏览器端;
S607:移动端发送获取第二用户标识符信息给服务器端;浏览器端发送获取第一用户标识符信息给服务器端
S608:服务器端根据所述获取第二用户标识符信息,将所述第二用户标识符发送给移动端;服务器端根据所述获取第一用户标识符信息,将所述第一用户标识符发送给浏览器端;
S609:移动端发送第一实时消息给服务器端,所述第一实时消息包括第二用户标识符信息;浏览器端发送第二实时消息给服务器端,所述第二实时消息包括第一用户标识符信息;
S610:经服务器端判断移动端发送的第一实时消息中的标识符类别为用户标识符,并且该用户标识符在标识符列表中;经服务器端判断浏览器端发送的第二实时消息中的标识符类别为用户标识符,并且该用户标识符在标识符列表中;
S611:服务器端根据第二用户标识符查找该服务器端与浏览器端之间的第二连接对象;根据第一用户标识符查找该服务器端与移动端之间的第一连接对象;
S612:服务器端通过第二连接对象,将第一实时消息主动推送给浏览器端;服务器端通过第一连接对象,将第二实时消息主动推送给移动端;
S613:浏览器端通过第二连接对象接收第一实时消息;移动端通过第一连接对象接收第二实时消息。
重复上述S9-S13,即可实现移动端与浏览器端相互传输更多的实时消息。另外,在移动端与浏览器端通过服务器端进行更多实时消息传输时,服务器端也需要分别对移动端与浏览器端进行存活心跳检测,因此移动端与浏览器端应定时向服务器端发送存活信息,以进行响应心跳。所述存活心跳检测是为了判断服务器端与移动端或浏览器端是否还存在连接。
如果服务器端在预定时间内(比如:60秒)没有收到来自移动端的存活信息,或者,服务器端收到移动端发送的结束传输信息,则服务器端将第一用户标识符与第一连接对象进行解除绑定,并将相应的用户标识符列表中的第一用户标识符移除。
这里的第一、第二,只是为了进行区别性描述,没有先后顺序的限定作用。
本发明实施例的传输方法,在同一时刻能够实现移动端到服务器端和服务器端到浏览器端的数据发送;由于是通过服务器端主动推送的,这种实时消息的传输只需要客户端与服务器端建立一次连接,不需要每传输一条消息都与服务器端建立一次连接,同时,服务器端不需要在没有最新消息时回应客户端,也不用频繁地查询是否有最新消息,因此,可以很大程度地减轻服务器端的压力,很大程度地提高实时消息的传输效率。
如图4所示的实时消息传输系统,其用于服务器端,包括:
连接模块,用于响应客户端的连接请求,与相应客户端进行连接;所述客户端包括发送客户端和接收客户端;
接收模块,用于接收所述发送客户端发送的实时消息,所述发送客户端发送的实时消息包括与所述接收客户端相对应的标识符;
主动推送模块,用于根据与所述接收客户端相对应的标识符,将接收到的所述发送客户端发送的实时消息主动推送给所述接收客户端。
本发明实施例中的实时消息传输系统,可用于实现上述的实时消息传输方法,其可以实现将实时消息主动推送给相应的接收客户端,这能够使服务器端接收到最新消息后,及时地将最新消息发送出去,保证了消息传输的及时性;同时,服务器端不需要在没有最新消息时回应客户端,也不用频繁地查询是否有最新消息,因此,可以很大程度地减轻服务器端的压力;另外,该方法也可以很大程度地减轻了接收客户端的压力。
机遇图4所示的实时消息传输系统,所述连接模块包括:
接收单元,用于接收客户端发送的请求连接信息;
生成单元,用于生成该服务器端与该客户端之间的连接对象;
所述接收单元,还用于接收该客户端发送的请求获取用户标识信息,所述该客户端发送的请求获取用户标识信息包括该客户端的房间标识符;
绑定单元,用于根据该客户端的房间标识符生成与该客户端相对应的用户标识符,且将所述用户标识符与所述连接对象进行绑定;
保存单元,用于根据该客户端的房间标识符,将所述用户标识符保存到标识符列表中的相对应的用户标识符列表中,且每个用户标识符列表都有对应的房间标识符;所述标识符列表包括与该服务器端相连接的全部用户客户端相对应的所有用户标识符,且所述标识符列表中包括群发标识符;
第一发送单元,用于将所述用户标识符发送给该客户端。
本发明实施例的实时消息传输方法可以实现上述的实时消息传输方法,其可以在服务器端与客户端的连接后,生成与该客户端对应的连接对象和用户标识符;连接对象可以用于服务器端与客户端之间的数据传输,在同一时刻能够实现客户端到服务器端和服务器端到客户端的数据发送,更是便于服务器端主动将实时消息推送给该客户端,缩短了实时消息传输的时间,也减少了服务器端的压力。用户标识符与该连接对象绑定后,可便于服务器端对连接对象的管理,以至于更及时地传输实时消息。
基于图4所示的实时消息传输系统,如图5所示,所述主动推送模块包括:
第一判断单元,用于判断发送客户端发送的实时消息中的与所述接收客户端相对应的标识符的类别;
第二判断单元,用于如果发送客户端发送的实时消息中的与所述接收客户端相对应的标识符是用户标识符,则判断该用户标识符是否在标识符列表中;
第一查找单元,用于如果该用户标识符在所述标识符列表中,则根据该用户标识符查找该服务器端与该接收客户端之间的连接对象;
第二发送单元,用于通过该服务器端与该接收客户端之间的连接对象,将接收到的所述发送客户端发送的实时消息主动推送给与该服务器端相连接的该接收客户端。
本发明实施例的实时消息传输系统可以实现上述的实时消息传输方法,其可以使服务器端通过相应的连接对象将实时消息更快速地传输给与该服务器端相连接的该接收客户端。由于是通过服务器端主动推送的,这种实时消息的传输只需要客户端与服务器端建立一次连接,不需要每传输一条消息都与服务器端建立一次连接,同时,服务器端不需要在没有最新消息时回应客户端,也不用频繁地查询是否有最新消息,因此,可以很大程度地减轻服务器端的压力,很大程度地提高实时消息的传输效率。
基于图4所示的实时消息传输系统,如图6所示,所述主动推送模块还包括:
第三判断单元,用于如果发送客户端发送的实时消息中的与所述接收客户端相对应的标识符是房间标识符,则判断该房间标识符是否在标识符列表中;
第二查找单元,用于如果该房间标识符在所述标识符列表中,则根据该房间标识符查找与该房间标识符相对应的用户标识符列表中的全部用户标识符;
第三查找单元,用于根据与该房间标识符相对应的用户标识符列表中的全部用户标识符,查找该服务器端与该房间内的全部用户客户端之间的所有连接对象;
第三发送单元,用于通过该服务器端与该房间内的全部用户客户端之间的所有连接对象,将接收到的所述发送客户端发送的实时消息主动推送给与该服务器端相连接的该房间内的全部用户客户端。
本发明实施例的传输系统,可用于实现上述的方法,其可以使服务器端通过相应的连接对象将实时消息更快速地传输给与该服务器端相连接的该房间内的全部用户客户端,且可以很大程度地减轻服务器端的压力,很大程度地提高实时消息的传输效率。
基于图4所示的实时消息传输系统,如图7所示,所述主动推送模块还包括:
第四判断单元,用于如果发送客户端发送的实时消息中的与所述接收客户端相对应的标识符是群发标识符,则判断该群发标识符是否在所述标识符列表中;
第四查找单元,用于如果该群发标识符在所述标识符列表中,则根据该群发标识符查找所述标识符列表中的全部房间标识符相对应的所有用户标识符列表中的全部用户标识符;
第五查找单元,用于根据所述标识符列表中的全部房间标识符相对应的所有用户标识符列表中的全部用户标识符,查找该服务器端与对应的全部用户客户端之间的所有连接对象;
第四发送单元,用于通过该服务器端与对应的全部用户客户端之间的所有连接对象,将接收到的所述发送客户端发送的实时消息主动推送给与该服务器端相连接的全部用户客户端。
本发明实施例的传输系统,可用于实现上述的方法,其可以使服务器端通过相应的连接对象将实时消息更快速地传输给与该服务器端相连接的相应的每个客户端,且可以很大程度地减轻服务器端的压力,很大程度地提高实时消息的传输效率。
通常,所述实时消息传输系统还包括检测模块,用于客户端与服务器连接后,对该客户端进行存活心跳检测。所述实时消息传输系统还包括结束模块,用于如果服务器端在预定时间内没有收到来自该客户端的存活信息或者若收到客户端发送的结束传输信息,则服务器端将该客户端的用户标识符与其相对应的连接对象进行解除绑定,并将相应的用户标识符列表中的该客户端的用户标识符移除。
以上所述,仅为本发明的实施例,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (10)
1.一种实时消息传输方法,用于服务器端,其特征在于,包括以下步骤:
响应客户端的连接请求,与相应客户端进行连接;所述客户端包括发送客户端和接收客户端;
接收所述发送客户端发送的实时消息,所述发送客户端发送的实时消息包括与所述接收客户端相对应的标识符;
根据与所述接收客户端相对应的标识符,将接收到的所述发送客户端发送的实时消息主动推送给所述接收客户端。
2.根据权利要求1所述的实时消息传输方法,其特征在于,所述与相应客户端进行连接包括以下步骤:
接收客户端发送的请求连接信息;
生成该服务器端与该客户端之间的连接对象;
接收该客户端发送的请求获取用户标识信息,所述该客户端发送的请求获取用户标识信息包括该客户端的房间标识符;
根据该客户端的房间标识符生成与该客户端相对应的用户标识符,且将所述用户标识符与所述连接对象进行绑定;
根据该客户端的房间标识符,将所述用户标识符保存到标识符列表中的相对应的用户标识符列表中,且每个用户标识符列表都有对应的房间标识符;所述标识符列表包括与该服务器端相连接的全部用户客户端相对应的所有用户标识符,且所述标识符列表中包括群发标识符;
将所述用户标识符发送给该客户端。
3.根据权利要求1所述的实时消息传输方法,其特征在于,所述将接收到的所述发送客户端发送的实时消息主动推送给所述接收客户端,包括以下步骤:
判断发送客户端发送的实时消息中的与所述接收客户端相对应的标识符的类别;
如果发送客户端发送的实时消息中的与所述接收客户端相对应的标识符是用户标识符,则判断该用户标识符是否在标识符列表中;
如果该用户标识符在所述标识符列表中,则根据该用户标识符查找该服务器端与该接收客户端之间的连接对象;
通过该服务器端与该接收客户端之间的连接对象,将接收到的所述发送客户端发送的实时消息主动推送给与该服务器端相连接的该接收客户端。
4.根据权利要求3所述的实时消息传输方法,其特征在于,所述将接收到的所述发送客户端发送的实时消息主动推送给所述接收客户端还包括以下步骤:
如果发送客户端发送的实时消息中的与所述接收客户端相对应的标识符是房间标识符,则判断该房间标识符是否在标识符列表中;
如果该房间标识符在所述标识符列表中,则根据该房间标识符查找与该房间标识符相对应的用户标识符列表中的全部用户标识符;
根据与该房间标识符相对应的用户标识符列表中的全部用户标识符,查找该服务器端与该房间内的全部用户客户端之间的所有连接对象;
通过该服务器端与该房间内的全部用户客户端之间的所有连接对象,将接收到的所述发送客户端发送的实时消息主动推送给与该服务器端相连接的该房间内的全部用户客户端。
5.根据权利要求3所述的实时消息传输方法,其特征在于,所述将接收到的所述发送客户端发送的实时消息主动推送给所述接收客户端还包括以下步骤:
如果发送客户端发送的实时消息中的与所述接收客户端相对应的标识符是群发标识符,则判断该群发标识符是否在所述标识符列表中;
如果该群发标识符在所述标识符列表中,则根据该群发标识符查找所述标识符列表中的全部房间标识符相对应的所有用户标识符列表中的全部用户标识符;
根据所述标识符列表中的全部房间标识符相对应的所有用户标识符列表中的全部用户标识符,查找该服务器端与对应的全部用户客户端之间的所有连接对象;
通过该服务器端与对应的全部用户客户端之间的所有连接对象,将接收到的所述发送客户端发送的实时消息主动推送给与该服务器端相连接的全部用户客户端。
6.一种实时消息传输系统,用于服务器端,其特征在于,包括:
连接模块,用于响应客户端的连接请求,与相应客户端进行连接;所述客户端包括发送客户端和接收客户端;
接收模块,用于接收所述发送客户端发送的实时消息,所述发送客户端发送的实时消息包括与所述接收客户端相对应的标识符;
主动推送模块,用于根据与所述接收客户端相对应的标识符,将接收到的所述发送客户端发送的实时消息主动推送给所述接收客户端。
7.根据权利要求6所述的实时消息传输系统,其特征在于,所述连接模块包括:
接收单元,用于接收客户端发送的请求连接信息;
生成单元,用于生成该服务器端与该客户端之间的连接对象;
所述接收单元,还用于接收该客户端发送的请求获取用户标识信息,所述该客户端发送的请求获取用户标识信息包括该客户端的房间标识符;
绑定单元,用于根据该客户端的房间标识符生成与该客户端相对应的用户标识符,且将所述用户标识符与所述连接对象进行绑定;
保存单元,用于根据该客户端的房间标识符,将所述用户标识符保存到标识符列表中的相对应的用户标识符列表中,且每个用户标识符列表都有对应的房间标识符;所述标识符列表包括与该服务器端相连接的全部用户客户端相对应的所有用户标识符,且所述标识符列表中包括群发标识符;
第一发送单元,用于将所述用户标识符发送给该客户端。
8.根据权利要求6所述的实时消息传输系统,其特征在于,所述主动推送模块包括:
第一判断单元,用于判断发送客户端发送的实时消息中的与所述接收客户端相对应的标识符的类别;
第二判断单元,用于如果发送客户端发送的实时消息中的与所述接收客户端相对应的标识符是用户标识符,则判断该用户标识符是否在标识符列表中;
第一查找单元,用于如果该用户标识符在所述标识符列表中,则根据该用户标识符查找该服务器端与该接收客户端之间的连接对象;
第二发送单元,用于通过该服务器端与该接收客户端之间的连接对象,将接收到的所述发送客户端发送的实时消息主动推送给与该服务器端相连接的该接收客户端。
9.根据权利要求8所述的实时消息传输系统,其特征在于,所述主动推送模块还包括:
第三判断单元,用于如果发送客户端发送的实时消息中的与所述接收客户端相对应的标识符是房间标识符,则判断该房间标识符是否在标识符列表中;
第二查找单元,用于如果该房间标识符在所述标识符列表中,则根据该房间标识符查找与该房间标识符相对应的用户标识符列表中的全部用户标识符;
第三查找单元,用于根据与该房间标识符相对应的用户标识符列表中的全部用户标识符,查找该服务器端与该房间内的全部用户客户端之间的所有连接对象;
第三发送单元,用于通过该服务器端与该房间内的全部用户客户端之间的所有连接对象,将接收到的所述发送客户端发送的实时消息主动推送给与该服务器端相连接的该房间内的全部用户客户端。
10.根据权利要求8所述的实时消息传输系统,其特征在于,所述主动推送模块还包括:
第四判断单元,用于如果发送客户端发送的实时消息中的与所述接收客户端相对应的标识符是群发标识符,则判断该群发标识符是否在所述标识符列表中;
第四查找单元,用于如果该群发标识符在所述标识符列表中,则根据该群发标识符查找所述标识符列表中的全部房间标识符相对应的所有用户标识符列表中的全部用户标识符;
第五查找单元,用于根据所述标识符列表中的全部房间标识符相对应的所有用户标识符列表中的全部用户标识符,查找该服务器端与对应的全部用户客户端之间的所有连接对象;
第四发送单元,用于通过该服务器端与对应的全部用户客户端之间的所有连接对象,将接收到的所述发送客户端发送的实时消息主动推送给与该服务器端相连接的全部用户客户端。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710251823.5A CN107426081A (zh) | 2017-04-18 | 2017-04-18 | 一种实时消息传输方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710251823.5A CN107426081A (zh) | 2017-04-18 | 2017-04-18 | 一种实时消息传输方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107426081A true CN107426081A (zh) | 2017-12-01 |
Family
ID=60424144
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710251823.5A Pending CN107426081A (zh) | 2017-04-18 | 2017-04-18 | 一种实时消息传输方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107426081A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108390950A (zh) * | 2018-05-28 | 2018-08-10 | 中国建设银行股份有限公司 | 一种消息推送方法、装置及设备 |
CN111030918A (zh) * | 2019-11-19 | 2020-04-17 | 维沃移动通信有限公司 | 一种消息处理方法、电子设备及服务器 |
CN112511580A (zh) * | 2019-09-16 | 2021-03-16 | 北京国双科技有限公司 | 消息推送的方法、装置、存储介质和设备 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20010027474A1 (en) * | 1999-12-30 | 2001-10-04 | Meny Nachman | Method for clientless real time messaging between internet users, receipt of pushed content and transacting of secure e-commerce on the same web page |
CN103312586A (zh) * | 2012-03-09 | 2013-09-18 | 联想(北京)有限公司 | 一种即时通信的方法、系统及服务器 |
CN103618665A (zh) * | 2013-12-10 | 2014-03-05 | 南京守护宝信息技术有限公司 | 一种向客户端推送消息的方法 |
CN103634282A (zh) * | 2012-08-24 | 2014-03-12 | 腾讯科技(深圳)有限公司 | 信息框推送的方法及系统 |
CN103916442A (zh) * | 2013-01-07 | 2014-07-09 | 阿里巴巴集团控股有限公司 | 消息推送实现方法、移动终端及消息推送系统 |
CN104980333A (zh) * | 2014-04-14 | 2015-10-14 | 纬创资通股份有限公司 | Pushlet即时通信方法及平台 |
CN105471964A (zh) * | 2015-11-16 | 2016-04-06 | 中国建设银行股份有限公司 | 用于数据推送的方法、服务器、客户端以及系统 |
-
2017
- 2017-04-18 CN CN201710251823.5A patent/CN107426081A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20010027474A1 (en) * | 1999-12-30 | 2001-10-04 | Meny Nachman | Method for clientless real time messaging between internet users, receipt of pushed content and transacting of secure e-commerce on the same web page |
CN103312586A (zh) * | 2012-03-09 | 2013-09-18 | 联想(北京)有限公司 | 一种即时通信的方法、系统及服务器 |
CN103634282A (zh) * | 2012-08-24 | 2014-03-12 | 腾讯科技(深圳)有限公司 | 信息框推送的方法及系统 |
CN103916442A (zh) * | 2013-01-07 | 2014-07-09 | 阿里巴巴集团控股有限公司 | 消息推送实现方法、移动终端及消息推送系统 |
CN103618665A (zh) * | 2013-12-10 | 2014-03-05 | 南京守护宝信息技术有限公司 | 一种向客户端推送消息的方法 |
CN104980333A (zh) * | 2014-04-14 | 2015-10-14 | 纬创资通股份有限公司 | Pushlet即时通信方法及平台 |
CN105471964A (zh) * | 2015-11-16 | 2016-04-06 | 中国建设银行股份有限公司 | 用于数据推送的方法、服务器、客户端以及系统 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108390950A (zh) * | 2018-05-28 | 2018-08-10 | 中国建设银行股份有限公司 | 一种消息推送方法、装置及设备 |
CN112511580A (zh) * | 2019-09-16 | 2021-03-16 | 北京国双科技有限公司 | 消息推送的方法、装置、存储介质和设备 |
CN111030918A (zh) * | 2019-11-19 | 2020-04-17 | 维沃移动通信有限公司 | 一种消息处理方法、电子设备及服务器 |
CN111030918B (zh) * | 2019-11-19 | 2022-03-25 | 维沃移动通信有限公司 | 一种消息处理方法、电子设备及服务器 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP1653704B1 (en) | Method and system for establishing a bidirectional tunnel | |
CN101138205B (zh) | 数据包中继装置 | |
CN103069755B (zh) | 使用多个客户端实例的即时消息传送的方法和系统 | |
US8099510B2 (en) | Relay device and program product, allowing continued communication via an alternative protocol | |
US7853703B1 (en) | Methods and apparatuses for identification of device presence | |
CN103795689A (zh) | 资源订阅方法及装置 | |
CN104009938A (zh) | 基于路由层面的长连接的方法和系统 | |
CN107426081A (zh) | 一种实时消息传输方法及系统 | |
CN109474718A (zh) | 域名解析方法和装置 | |
JP4115354B2 (ja) | ピア・ツー・ピア通信システム | |
CN105959188B (zh) | 一种控制用户终端上线的方法和装置 | |
CN101599921B (zh) | 一种企业即时通信系统及其文件传输方法 | |
CN102035655A (zh) | 端到端即时通讯的实现方法、端到端即时通讯终端及系统 | |
CN102858025A (zh) | 点对点互动操作的方法及设备 | |
CN100546287C (zh) | 一种在即时通信过程中提供好友状态的方法、系统及设备 | |
KR20060112350A (ko) | 메신저를 이용한 알림 시스템 및 방법 | |
CN104980481B (zh) | 电子终端之间传输数据的方法及系统、电子终端 | |
CN103973648A (zh) | 应用数据推送方法、装置及系统 | |
CN103905287B (zh) | 基于局域网络的通信程序关联方法和装置 | |
CN101166129A (zh) | 获取应用服务器标识信息的方法、终端、设备和系统 | |
CN100393039C (zh) | 无ip地址设备网管方法 | |
WO2010009642A1 (zh) | 多企业间的短信实现方法、系统和设备 | |
CN102724233A (zh) | 信息家电系统中用IPv4协议栈实现与IPv6进程的通信方法 | |
CN103069782B (zh) | 通信系统以及用于通过该通信系统进行通信的方法 | |
CN112559134A (zh) | 一种分布式WebSocket集群构建方法、装置、系统及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20171201 |