CN110380967B - 一种基于sse技术的服务器推送消息方法 - Google Patents

一种基于sse技术的服务器推送消息方法 Download PDF

Info

Publication number
CN110380967B
CN110380967B CN201910308579.0A CN201910308579A CN110380967B CN 110380967 B CN110380967 B CN 110380967B CN 201910308579 A CN201910308579 A CN 201910308579A CN 110380967 B CN110380967 B CN 110380967B
Authority
CN
China
Prior art keywords
server
client
identifier
state information
sse
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
Application number
CN201910308579.0A
Other languages
English (en)
Other versions
CN110380967A (zh
Inventor
万明
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Wuhan Chuxin Technology Co ltd
Original Assignee
Wuhan Chuxin Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Wuhan Chuxin Technology Co ltd filed Critical Wuhan Chuxin Technology Co ltd
Priority to CN201910308579.0A priority Critical patent/CN110380967B/zh
Publication of CN110380967A publication Critical patent/CN110380967A/zh
Application granted granted Critical
Publication of CN110380967B publication Critical patent/CN110380967B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/146Markers for unambiguous identification of a particular session, e.g. session cookie or URL-encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/55Push-based network services

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Transfer Between Computers (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明公开了一种基于SSE技术的服务器推送消息方法,所述服务器推送消息方法在SSE技术上增加了状态管理;首先,当客户端每次发起SSE连接请求到服务器时,将状态信息加入到路由地址中;然后,服务器解析当前接收到的状态信息,通过查询数据库,对状态信息中的唯一标识符进行比对和更新;最后服务器将更新后的状态信息返回给客户端,客户端根据接收到的所述更新后的状态信息对当前从服务器获得的初始化状态信息进行更新。该方法在状态信息中定义了客户端目前的状态,且服务器端无需长时间存储反映客户端状态的状态信息,只需要临时性的把状态信息存入到内存中即可,有效的降低了服务器端的设计复杂度。

Description

一种基于SSE技术的服务器推送消息方法
技术领域
本发明涉及服务器消息推送领域,更具体地说,涉及一种基于SSE推送技术实现服务器推送消息的方法。
背景技术
网络软件技术中很重要的一个技术是服务器消息推送。例如App里要及时收到别人的聊天记录;动态网页里要及时看到别人对某个文章的评论等。这种技术要求保持客户端和服务器端的信息同步,使得客户端能够以极小的延迟获取到服务器最新的改动,并且尽可能的降低服务器压力。
现有的推送技术之一:短连接轮询。其通过递归的方法,通过不停的向服务器发起请求,获取到最新的消息。然而,其缺点比较明显:一是浏览器端比较耗费性能,容易无法响应用户请求;二是频繁的发起请求,数据可能并没有更新,浪费服务器资源。
现有的推送技术之一:长轮询。当前推送技术下,客户端像传统轮询一样从服务端请求数据,服务端会阻塞请求不会立刻返回,直到有数据或超时才返回给客户端,然后关闭连接,客户端处理完响应信息后再向服务器发送新的请求。然而,其缺点是在客户端频繁有数据改动时,会造成当前网络下数据请求量过大,服务器无法即时反馈。
现有的推送技术之一:WebSocket。WebSocket是一种全新的协议,随着HTML5草案的不断完善,越来越多的现代浏览器开始全面支持WebSocket技术,它将TCP的Socket(套接字)应用在了webpage上,从而使通信双方建立起一个保持在活动状态连接通道。然后,其缺点是服务器端设计比较复杂:负载均衡问题处理起来比较复杂;需要在服务器端长期维护状态。
现有的推送技术之一:SSE(Server-Sent Event)。SSE与长轮询机制类似,区别是每个连接不只发送一个消息。客户端发送一个请求消息,服务端保持这个连接直到有新消息返回给客户端。然而,其缺点是客户端发送的请求消息中,路由地址无状态,这使得服务器端需要持久化客户端的状态消息,且容易出现消息丢失或者重复的情况。
发明内容
本发明要解决的技术问题在于,针对SSE技术中路由地址无状态,导致消息丢失或者重复缺陷,提供一种在SSE推送技术中增加状态管理机制,以此来实现服务器推送消息的方法。
本发明解决其技术问题所采用的技术方案是:构造一种基于SSE技术的服务器推送消息方法,所述服务器推送消息方法包括以下步骤:
S1、客户端从服务器获取初始化状态信息;
S2、客户端向服务器发起SSE连接请求,并在路由地址中加入获取到的初始化状态信息;所述状态信息中包括了若干类标识符,每类标识符均设有唯一的ID值;其中,标识符均是逐个创建的,并且在同类标识符中,新创建的标识符的ID值大于在过去时间内创建的标识符的ID值;
S3、服务器收到SSE连接请求后,首先,服务器解析路由地址中的初始化状态信息;
其次,服务器将解析所得的每个标志符作为待比对标志符,且将所述待比对标志符的ID值与后端数据库中已缓存的标识符数据进行比对;
最后,在同类标识符中,针对比对结果,对待比对标志符的ID值进行更新,并将更新后的标识符作为更新标识符,并由服务器返回给客户端,此时保持服务器和客户端之间的连接不断开;
S4、客户端监听并接收由服务器反馈的数据,且在每次接收到数据后,根据更新标识符的ID值对初始化状态信息进行更新。
进一步的,由客户端发起的路由请求地址为:客户端的请求地址/连接请求类型?初始状态信息。
进一步的,数据库中存储数据包括过去以及当前时间下创建的若干个标识符。
进一步的,步骤S3中针对每类标识符,将当前时间下创建的标识符作为更新标识符。
进一步的,步骤S3中,当客户端与服务器之间的连接时间到达预设的时间值时,服务器主动断开与客户端之间的连接,并等待客户端发送下一个SSE连接请求。
进一步的,步骤S4中,当客户端需增加或取消监听用户在页面上操作行为时,客户端主动断开与服务器之间的连接,且在客户端更新了状态信息之后,由客户端重新发起SSE连接请求到服务器,进一步执行步骤S2。
进一步的,步骤S4中,当服务器与客户端之间的连接,被服务器主动断开后,客户端根据当前获取的最新的状态信息,向服务器发起新的SSE连接请求,在服务器接收到所述新的SSE连接请求后,进一步执行步骤S3。
实施本发明提供的一种基于SSE技术的服务器推送消息方法,具有以下有益效果:
1、状态信息中定义了客户端目前的状态,且服务器端无需长时间存储反映客户端状态的状态信息,只需要临时性的把状态信息存入到内存中即可,有效的降低了服务器端的设计复杂度;
2、由于状态信息放在了路由地址里,不用再考虑负载均衡的问题;
3、每次请求维持的时间可以自行设置,服务器压力较短轮询和长轮询来说大幅较少。
附图说明
下面将结合附图及实施例对本发明作进一步说明,附图中:
图1是服务器推送消息方法的实施流程图。
具体实施方式
为了对本发明的技术特征、目的和效果有更加清楚的理解,现对照附图详细说明本发明的具体实施方式。
请参考图1,其为服务器推送消息方法的实施流程图,本发明提供的一种一种基于SSE技术的服务器推送消息方法,包括以下步骤:
S1、客户端从服务器获取初始化状态信息;所述状态信息中包括了若干个标识符,本实施例中,状态信息中包括的有评论标识符comment和状态标识符notification,且每个标识符均设有唯一的ID值;其中,状态信息以键值对的形式体现,具体的体现形式为{comment_id:1,notification_id:2},其中,本实施例中初始化状态信息中包括的评论标识符comment的ID值为1,状态标识符notification的ID值为2。
S2、客户端向服务器发送SSE连接请求,并在路由地址中加入获取到的初始化状态信息;本实施例中,由客户端发起的路由请求地址为:test.com/sse?comment_id=1&notification_id=2;其中“test.com”为客户端的请求地址,“sse”为连接请求类型,“comment_id=1&notification_id=2”为初始状态信息。
S3、服务器收到SSE连接请求后:
首先,服务器解析路由地址中的初始化状态信息;具体的是,从路由地址中取得{comment_id:1,notification_id:2};
其次,服务器将每个标志符的ID值与后端数据库中的评论标识符数据和状态标识符数据进行比对;
最后,服务器从比对结果中分别取得ID值大于comment_id=1的更新评论标识符,以及ID值大于notification=2的更新状态标识符;进一步的,服务器对获取到的若干个更新标识符和更新状态标识符,以相应的键值对的方式进行组合并返回给客户端,此时保持服务器和客户端之间的连接不断开。
S4、客户端监听并接收由服务器反馈的数据,且在每次接收到数据后,根据更新标示符的ID值对初始化状态信息进行更新。本实施例中,优选的将状态信息更新为{comment_id:5,notification_id:10}。
优选的,本实施例中考虑到在连接过程中,当服务器监听到后端数据库有新的状态信息产生时,由服务器主动的将产生的新的状态信息推送到客户端。
优选的,本实施例中,考虑到连接超时的问题,当客户端与服务器之间的连接时间到达指定的时间值时(本实施例中,优选的将所述指定的时间值设为30秒),服务器主动断开与客户端之间的连接,并等待客户端发送下一个SSE连接请求。
优选的,本实施例中,当用户在页面上打开了评论框,客户端需要监听评论的添加,并且在关掉评论框的时候需要取消监听,避免没必要的资源浪费,此时客户端主动断开与服务器之间的连接,且在客户端更新了状态信息之后,由客户端重新发起SSE连接请求到服务器。
优选的,当服务器与客户端之间的连接,被服务器主动断开后,客户端根据当前获取到的最新的状态信息,向服务器发起新的SSE连接请求,在服务器接收到所述新的SSE连接请求后。
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。

Claims (7)

1.一种基于SSE技术的服务器推送消息方法,其特征在于,包括以下步骤:
S1、客户端从服务器获取初始化状态信息;
S2、客户端向服务器发起SSE连接请求,并在路由地址中加入获取到的初始化状态信息;所述状态信息中包括了不同类别的标识符,每类标识符均设有唯一的ID值;其中,标识符均是逐个创建的,并且在同类标识符中,新创建的标识符的ID值大于在过去时间内创建的标识符的ID值;
S3、服务器收到SSE连接请求后,首先,服务器解析路由地址中的初始化状态信息;
其次,服务器将解析所得的每个标志符作为待比对标志符,且将所述待比对标志符的ID值与后端数据库中已缓存的标识符数据进行比对;
最后,在同类标识符中,针对比对结果,对待比对标志符的ID值进行更新,并将更新后的标识符作为更新标识符,并由服务器返回给客户端,此时保持服务器和客户端之间的连接不断开;
其中,服务器从比对结果中分别取得ID值大于comment_id=1的更新评论标识符,以及ID值大于notification=2的更新状态标识符;
S4、客户端监听并接收由服务器反馈的数据,且在每次接收到数据后,根据更新标识符的ID值对初始化状态信息进行更新。
2.根据权利要求1所述的服务器推送消息方法,其特征在于,由客户端发起的路由请求地址为:客户端的请求地址/连接请求类型?初始状态信息。
3.根据权利要求1所述的服务器推送消息方法,其特征在于,数据库中存储的数据包括过去以及当前时间下创建的若干个标识符。
4.根据权利要求1所述的服务器推送消息方法,其特征在于,步骤S3中针对每类标识符,将当前时间下创建的标识符作为更新标识符。
5.根据权利要求1所述的服务器推送消息方法,其特征在于,步骤S3中,当客户端与服务器之间的连接时间到达预设的时间值时,服务器主动断开与客户端之间的连接,并等待客户端发送下一个SSE连接请求。
6.根据权利要求1所述的服务器推送消息方法,其特征在于,步骤S4中,当客户端需增加或取消监听用户在页面上操作行为时,客户端主动断开与服务器之间的连接,且在客户端更新了状态信息之后,由客户端重新发起SSE连接请求到服务器,进一步执行步骤S2。
7.根据权利要求6所述的服务器推送消息方法,其特征在于,步骤S4中,当服务器与客户端之间的连接,被服务器主动断开后,客户端根据当前获取的最新的状态信息,向服务器发起新的SSE连接请求,在服务器接收到所述新的SSE连接请求后,进一步执行步骤S3。
CN201910308579.0A 2019-04-17 2019-04-17 一种基于sse技术的服务器推送消息方法 Active CN110380967B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910308579.0A CN110380967B (zh) 2019-04-17 2019-04-17 一种基于sse技术的服务器推送消息方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910308579.0A CN110380967B (zh) 2019-04-17 2019-04-17 一种基于sse技术的服务器推送消息方法

Publications (2)

Publication Number Publication Date
CN110380967A CN110380967A (zh) 2019-10-25
CN110380967B true CN110380967B (zh) 2021-06-22

Family

ID=68248675

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910308579.0A Active CN110380967B (zh) 2019-04-17 2019-04-17 一种基于sse技术的服务器推送消息方法

Country Status (1)

Country Link
CN (1) CN110380967B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110908660B (zh) * 2019-11-21 2022-10-28 苏州达家迎信息技术有限公司 一种二维码生成方法、装置、计算机设备及存储介质
CN115022329B (zh) * 2022-07-08 2023-08-04 国泰君安证券股份有限公司 基于sse实现投顾实时图文直播的系统、方法、装置、处理器及其计算机可读存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102223381A (zh) * 2011-07-07 2011-10-19 莫雅静 一种消息推送方法、服务器、客户端及系统
CN107181821A (zh) * 2017-07-05 2017-09-19 广州华多网络科技有限公司 一种基于sse规范的消息推送方法及装置
CN108173946A (zh) * 2017-12-29 2018-06-15 明博教育科技股份有限公司 一种实现课堂实时互动的方法、系统及相关方法
CN109362060A (zh) * 2018-11-21 2019-02-19 通号通信信息集团有限公司 一种适用于铁路无线宽带通信系统的功能寻址方法及系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8930492B2 (en) * 2011-10-17 2015-01-06 Blackberry Limited Method and electronic device for content sharing

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102223381A (zh) * 2011-07-07 2011-10-19 莫雅静 一种消息推送方法、服务器、客户端及系统
CN107181821A (zh) * 2017-07-05 2017-09-19 广州华多网络科技有限公司 一种基于sse规范的消息推送方法及装置
CN108173946A (zh) * 2017-12-29 2018-06-15 明博教育科技股份有限公司 一种实现课堂实时互动的方法、系统及相关方法
CN109362060A (zh) * 2018-11-21 2019-02-19 通号通信信息集团有限公司 一种适用于铁路无线宽带通信系统的功能寻址方法及系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
《基于HTML5的防汛险情信息推送技术研究》;冯存华等;《大数据时代的信息化建设——2015(第三届)中国水利信息化与数字水利技术论坛论文集》;20150402;全文 *

Also Published As

Publication number Publication date
CN110380967A (zh) 2019-10-25

Similar Documents

Publication Publication Date Title
CA2770138C (en) Cluster server of an instant messaging system and messaging method between clusters
JP4771744B2 (ja) Impsクライアントの状態情報同期化方法
US20070016674A1 (en) Information exchange system, management server, and method for reducing network load used in the same
EP1746765A2 (en) Information exchange system and method for reducing network load
CN102045270A (zh) 聊天服务器系统、构建聊天服务器系统的方法以及聊天系统
CN111917562B (zh) 广播消息转发方法、装置、设备及存储介质
CN110380967B (zh) 一种基于sse技术的服务器推送消息方法
WO2023000940A1 (zh) 数据处理方法、装置、网元设备、存储介质及程序产品
CN114328618A (zh) 一种缓存数据同步方法、装置、设备及存储介质
CN103945455A (zh) 一种实现自适应心跳数据包发送的方法及装置
CN114827171B (zh) 信息同步方法、装置、计算机设备和存储介质
US7543030B2 (en) Peer-to-peer communication for instant messaging between different instant message application types
CN108337280B (zh) 一种资源更新方法及装置
CN109063140A (zh) 一种数据查询方法、中转服务器及计算机可读存储介质
CN109257448B (zh) 一种会话信息同步的方法及装置、电子设备、存储介质
CN110971873B (zh) 一种实时监控方法、监控系统及存储介质
CN111949302A (zh) 一种用于工业计算机管理系统的即时性更新方法、系统和设备
CN109379443B (zh) 一种面向物联网的分布式消息队列的实现方法
CN104052723A (zh) 信息处理方法和服务器
CN112559134B (zh) 一种分布式WebSocket集群构建方法、装置、系统及存储介质
US20100309928A1 (en) Asynchronous communication in an unstable network
CN114385372A (zh) 一种消息处理方法、装置及存储介质
CN111949918A (zh) 基于分布式环境下的websocket连接优化方法及系统
CN113037803A (zh) 地质灾害监测方法及系统、电子设备及存储介质
CN111565209B (zh) 客户端即时通信方法、装置、设备及介质

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
GR01 Patent grant
GR01 Patent grant
CP03 Change of name, title or address
CP03 Change of name, title or address

Address after: 430000, B0701, Comprehensive Building, Wuhan Zhongdi Science and Technology Park, No. 598 Guanshan Avenue, Donghu New Technology Development Zone, Wuhan City, Hubei Province (Wuhan Area of Free Trade Zone)

Patentee after: Wuhan Chuxin Technology Co.,Ltd.

Country or region after: China

Address before: 430000 Huazhong Shuguang Software Park, No.1 Guanshan 1st Road, Donghu Development Zone, Wuhan City, Hubei Province

Patentee before: Wuhan Chuxin Technology Co.,Ltd.

Country or region before: China