欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種基于SSE的前端數(shù)據(jù)實(shí)時(shí)更新方法與流程

文檔序號(hào):40466915發(fā)布日期:2024-12-27 09:32閱讀:15來(lái)源:國(guó)知局
一種基于SSE的前端數(shù)據(jù)實(shí)時(shí)更新方法與流程

本發(fā)明涉及計(jì)算機(jī)通信,具體地說(shuō)是一種基于sse的前端數(shù)據(jù)實(shí)時(shí)更新方法。


背景技術(shù):

1、在日常的開(kāi)發(fā)中,經(jīng)常能遇到服務(wù)端需要主動(dòng)推送給客戶端數(shù)據(jù)的業(yè)務(wù)場(chǎng)景,比如數(shù)據(jù)大屏的實(shí)時(shí)數(shù)據(jù),比如消息中心的未讀消息,比如聊天功能等等。

2、目前實(shí)現(xiàn)這些需求的方案主要有輪詢/長(zhǎng)輪詢、websocket。

3、輪詢是一種較為傳統(tǒng)的方式,客戶端定時(shí)地向服務(wù)端發(fā)送請(qǐng)求,詢問(wèn)是否有新數(shù)據(jù)。服務(wù)端只需要檢查數(shù)據(jù)狀態(tài),然后將結(jié)果返回給客戶端。輪詢的優(yōu)點(diǎn)是實(shí)現(xiàn)簡(jiǎn)單,兼容性好;缺點(diǎn)是可能產(chǎn)生較大的延遲,且對(duì)服務(wù)端資源消耗較高。長(zhǎng)輪詢是輪詢的改進(jìn)版??蛻舳讼蚍?wù)器發(fā)送請(qǐng)求,服務(wù)器收到請(qǐng)求后,如果有新的數(shù)據(jù),立即返回給客戶端;如果沒(méi)有新數(shù)據(jù),服務(wù)器會(huì)等待一定時(shí)間(比如30秒超時(shí)時(shí)間),在這段時(shí)間內(nèi),如果有新數(shù)據(jù),就返回給客戶端,否則返回空數(shù)據(jù)??蛻舳颂幚硗攴?wù)器返回的響應(yīng)后,再次發(fā)起新的請(qǐng)求,如此反復(fù)。長(zhǎng)輪詢相較于傳統(tǒng)的輪詢方式減少了請(qǐng)求次數(shù),但仍然存在一定的延遲。

4、websocket是一個(gè)雙向通訊的協(xié)議,優(yōu)點(diǎn)是可以同時(shí)支持客戶端和服務(wù)端彼此相互進(jìn)行通訊。功能上很強(qiáng)大。缺點(diǎn)是websocket是一個(gè)新的協(xié)議ws/wss,支持http協(xié)議的瀏覽器不一定支持ws協(xié)議。且websocket因?yàn)楣δ芨鼜?qiáng)大,結(jié)構(gòu)也就更復(fù)雜,相對(duì)比較重。


技術(shù)實(shí)現(xiàn)思路

1、本發(fā)明的技術(shù)任務(wù)是針對(duì)以上不足之處,提供一種基于sse的前端數(shù)據(jù)實(shí)時(shí)更新方法,能夠?qū)崿F(xiàn)實(shí)時(shí)通知,增強(qiáng)用戶體驗(yàn);并能節(jié)省資源,減少服務(wù)器的負(fù)載,提高性能。

2、本發(fā)明解決其技術(shù)問(wèn)題所采用的技術(shù)方案是:

3、一種基于sse的前端數(shù)據(jù)實(shí)時(shí)更新方法,該方法的實(shí)現(xiàn)包括以下步驟:

4、1)后端定義控制器用來(lái)處理sse請(qǐng)求和發(fā)送實(shí)時(shí)數(shù)據(jù);

5、2)創(chuàng)建sseemitter對(duì)象作為事件發(fā)射器,通過(guò)接口或者查詢數(shù)據(jù)庫(kù)數(shù)據(jù)的方式獲取數(shù)據(jù),并將數(shù)據(jù)轉(zhuǎn)換為字符串形式發(fā)送給客戶端;

6、3)通過(guò)emitter.send()方法發(fā)送的數(shù)據(jù)會(huì)被封裝為sse事件流的形式,客戶端通過(guò)監(jiān)聽(tīng)該事件流來(lái)實(shí)時(shí)接收數(shù)據(jù);

7、4)前端創(chuàng)建eventsource對(duì)象,并與所述后端控制器建立sse連接;

8、5)定義接收數(shù)據(jù)的回調(diào)函數(shù),在收到新數(shù)據(jù)時(shí)更新頁(yè)面上的數(shù)據(jù)。

9、基于sse建立合適的服務(wù)端方法和前端接口替換對(duì)應(yīng)的輪詢或者websocket接口更新頁(yè)面數(shù)據(jù)和消息信息,實(shí)現(xiàn)實(shí)時(shí)通知增強(qiáng)用戶體驗(yàn),sse默認(rèn)支持?jǐn)嗑€重連,支持自定義發(fā)送的數(shù)據(jù)類(lèi)型,節(jié)省資源減少服務(wù)器的負(fù)載和提高性能。

10、進(jìn)一步的,所述步驟1),具體實(shí)現(xiàn)如下:

11、定義一個(gè)streamstockprice()方法,使用@getmapping注解將/stock-price路徑映射到該方法上,并指定produces=mediatype.text_event_stream_value以表明該方法將產(chǎn)生sse事件流;

12、在該方法內(nèi)部創(chuàng)建一個(gè)sseemitter對(duì)象作為事件發(fā)射器。

13、進(jìn)一步的,所述步驟4),前端通過(guò)new?eventsource('/stock-price')創(chuàng)建一個(gè)eventsource對(duì)象,它與/stock-price路徑建立sse連接。

14、進(jìn)一步的,所述eventsource對(duì)象接收兩個(gè)參數(shù):url和options;

15、url為http事件來(lái)源,一旦eventsource對(duì)象被創(chuàng)建后,瀏覽器立即開(kāi)始對(duì)該url地址發(fā)送過(guò)來(lái)的事件進(jìn)行監(jiān)聽(tīng);

16、options是一個(gè)可選的對(duì)象,包含withcredentials屬性,表示是否發(fā)送憑證(cookie、http認(rèn)證信息等)到服務(wù)端,默認(rèn)為false。

17、進(jìn)一步的,所述eventsource對(duì)象具有readystate屬性值:

18、0,相當(dāng)于常量eventsource.connecting,表示連接還未建立,或者連接斷線;

19、1,相當(dāng)于常量eventsource.open,表示連接已經(jīng)建立,可以接收數(shù)據(jù);

20、2,相當(dāng)于常量eventsource.closed,表示連接已斷,且不會(huì)重連。

21、進(jìn)一步的,所述步驟5),通過(guò)eventsource.onmessage定義接收數(shù)據(jù)的回調(diào)函數(shù),eventsource對(duì)象本身繼承自eventtarget接口,因此可以使用addeventlistener()方法來(lái)監(jiān)聽(tīng)事件;

22、eventsource對(duì)象觸發(fā)的事件主要包括以下三種:

23、open事件:當(dāng)成功連接到服務(wù)端時(shí)觸發(fā);

24、message事件:當(dāng)接收到服務(wù)器發(fā)送的消息時(shí)觸發(fā);該事件對(duì)象的data屬性包含了服務(wù)器發(fā)送的消息內(nèi)容;

25、error事件:當(dāng)發(fā)生錯(cuò)誤時(shí)觸發(fā);該事件對(duì)象的event屬性包含了錯(cuò)誤信息;

26、或采用屬性監(jiān)聽(tīng)(onopen、onmessage、onerror)的形式,只監(jiān)聽(tīng)預(yù)定義的事件類(lèi)型(open、message、error)。

27、進(jìn)一步的,后端通過(guò)建立sseemittermanger,統(tǒng)一管理當(dāng)前服務(wù)sse連接的創(chuàng)建、釋放以及數(shù)據(jù)推送。

28、sseemittermanger結(jié)合redis緩存可實(shí)現(xiàn)集群環(huán)境sse連接的管理,也可以與nginx等配合使用。

29、進(jìn)一步的,開(kāi)啟sse連接接口的整個(gè)鏈路都支持長(zhǎng)連接。

30、本發(fā)明還要求保護(hù)一種基于sse的前端數(shù)據(jù)實(shí)時(shí)更新實(shí)現(xiàn)裝置,包括:至少一個(gè)存儲(chǔ)器和至少一個(gè)處理器;

31、所述至少一個(gè)存儲(chǔ)器,用于存儲(chǔ)機(jī)器可讀程序;

32、所述至少一個(gè)處理器,用于調(diào)用所述機(jī)器可讀程序,實(shí)現(xiàn)上述的方法。

33、本發(fā)明還要求保護(hù)一種計(jì)算機(jī)可讀介質(zhì),所述計(jì)算機(jī)可讀介質(zhì)上存儲(chǔ)有計(jì)算機(jī)指令,所述計(jì)算機(jī)指令在被處理器執(zhí)行時(shí),實(shí)現(xiàn)上述的方法。

34、本發(fā)明的一種基于sse的前端數(shù)據(jù)實(shí)時(shí)更新方法與現(xiàn)有技術(shù)相比,具有以下有益效果:

35、本發(fā)明通過(guò)提供基于sse的前端實(shí)時(shí)數(shù)據(jù)更新和消息通知方法,通過(guò)tcp建立一次長(zhǎng)連接,減少使用websocket接口的tcp連接數(shù)量,減少服務(wù)器的負(fù)載,提高性能,使得復(fù)雜度降低、客戶端消耗減少,具有廣泛的的瀏覽器兼容性,幾乎除ie之外的瀏覽器均已支持,對(duì)于不支持eventsource的瀏覽器,可以使用polyfill實(shí)現(xiàn)。而且使用sse的方式比輪詢和長(zhǎng)輪詢的方法更高效實(shí)時(shí)。



技術(shù)特征:

1.一種基于sse的前端數(shù)據(jù)實(shí)時(shí)更新方法,其特征在于,該方法的實(shí)現(xiàn)包括以下步驟:

2.根據(jù)權(quán)利要求1所述的一種基于sse的前端數(shù)據(jù)實(shí)時(shí)更新方法,其特征在于,所述步驟1),具體實(shí)現(xiàn)如下:

3.根據(jù)權(quán)利要求2所述的一種基于sse的前端數(shù)據(jù)實(shí)時(shí)更新方法,其特征在于,所述步驟4),前端通過(guò)new?eventsource('/stock-price')創(chuàng)建一個(gè)eventsource對(duì)象,它與/stock-price路徑建立sse連接。

4.根據(jù)權(quán)利要求1或3所述的一種基于sse的前端數(shù)據(jù)實(shí)時(shí)更新方法,其特征在于,所述eventsource對(duì)象接收兩個(gè)參數(shù):url和options;

5.根據(jù)權(quán)利要求4所述的一種基于sse的前端數(shù)據(jù)實(shí)時(shí)更新方法,其特征在于,所述eventsource對(duì)象具有readystate屬性值:

6.根據(jù)權(quán)利要求1所述的一種基于sse的前端數(shù)據(jù)實(shí)時(shí)更新方法,其特征在于,所述步驟5),通過(guò)eventsource.onmessage定義接收數(shù)據(jù)的回調(diào)函數(shù),使用addeventlistener()方法來(lái)監(jiān)聽(tīng)事件;

7.根據(jù)權(quán)利要求1所述的一種基于sse的前端數(shù)據(jù)實(shí)時(shí)更新方法,其特征在于,后端通過(guò)建立sseemittermanger,統(tǒng)一管理當(dāng)前服務(wù)sse連接的創(chuàng)建、釋放以及數(shù)據(jù)推送。

8.根據(jù)權(quán)利要求1所述的一種基于sse的前端數(shù)據(jù)實(shí)時(shí)更新方法,其特征在于,開(kāi)啟sse連接接口的整個(gè)鏈路都支持長(zhǎng)連接。

9.一種基于sse的前端數(shù)據(jù)實(shí)時(shí)更新實(shí)現(xiàn)裝置,其特征在于,包括:至少一個(gè)存儲(chǔ)器和至少一個(gè)處理器;

10.一種計(jì)算機(jī)可讀介質(zhì),其特征在于,所述計(jì)算機(jī)可讀介質(zhì)上存儲(chǔ)有計(jì)算機(jī)指令,所述計(jì)算機(jī)指令在被處理器執(zhí)行時(shí),實(shí)現(xiàn)權(quán)利要求1至8任一項(xiàng)所述的方法。


技術(shù)總結(jié)
本發(fā)明公開(kāi)了一種基于SSE的前端數(shù)據(jù)實(shí)時(shí)更新方法,屬于計(jì)算機(jī)通信技術(shù)領(lǐng)域,該方法的實(shí)現(xiàn)包括以下步驟:后端定義控制器,用來(lái)處理SSE請(qǐng)求和發(fā)送實(shí)時(shí)數(shù)據(jù);創(chuàng)建SseEmitter對(duì)象作為事件發(fā)射器,通過(guò)接口或者查詢數(shù)據(jù)庫(kù)數(shù)據(jù)的方式獲取數(shù)據(jù),并將數(shù)據(jù)轉(zhuǎn)換為字符串形式發(fā)送給客戶端;通過(guò)emitter.send()方法發(fā)送的數(shù)據(jù)會(huì)被封裝為SSE事件流的形式,客戶端通過(guò)監(jiān)聽(tīng)該事件流來(lái)實(shí)時(shí)接收數(shù)據(jù);前端創(chuàng)建EventSource對(duì)象,并與所述后端控制器建立SSE連接;定義接收數(shù)據(jù)的回調(diào)函數(shù),在收到新數(shù)據(jù)時(shí)更新頁(yè)面上的數(shù)據(jù)。本發(fā)明能夠?qū)崿F(xiàn)實(shí)時(shí)通知,增強(qiáng)用戶體驗(yàn);并能節(jié)省資源,減少服務(wù)器的負(fù)載,提高性能。

技術(shù)研發(fā)人員:趙偉華,田浩,路國(guó)隋,李存冰,王文文,陳煥新,石園
受保護(hù)的技術(shù)使用者:浪潮軟件科技有限公司
技術(shù)研發(fā)日:
技術(shù)公布日:2024/12/26
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
克山县| 清镇市| 伽师县| 乌鲁木齐县| 曲水县| 屏东县| 溆浦县| 苏尼特右旗| 社旗县| 合江县| 南城县| 天水市| 三河市| 耒阳市| 万州区| 蚌埠市| 荥经县| 建湖县| 高雄县| 玛多县| 晋州市| 讷河市| 蛟河市| 淳化县| 抚顺市| 营山县| 眉山市| 临洮县| 积石山| 乐昌市| 隆昌县| 云阳县| 邓州市| 邵武市| 翼城县| 思南县| 揭西县| 靖州| 石河子市| 象州县| 通许县|