偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

http如何像tcp一樣實(shí)時(shí)的收消息?

開(kāi)發(fā) 開(kāi)發(fā)工具
http如何像tcp一樣實(shí)時(shí)的收消息?今天就讓我們來(lái)講一講。

[[172748]]

http如何像tcp一樣實(shí)時(shí)的收消息?

一、webim如何實(shí)現(xiàn)消息推送

webim通常有三種方式實(shí)現(xiàn)推送通道:

1)WebSocket

2)FlashSocket

3)http輪詢

其中1)和2)是用Tcp長(zhǎng)連接實(shí)現(xiàn)的,其消息的實(shí)時(shí)性可以通過(guò)tcp保證。

方案3)才算是webim實(shí)現(xiàn)消息推送的“正統(tǒng)”方案,用http短連接輪詢的方式實(shí)現(xiàn)“偽長(zhǎng)連接”,既然是輪詢,有朋友就對(duì)消息的實(shí)時(shí)性產(chǎn)生了質(zhì)疑。本文要解答,webim使用http長(zhǎng)輪詢?nèi)绾伪WC消息的絕對(duì)實(shí)時(shí)性。

二、人們?yōu)槭裁磿?huì)誤解http長(zhǎng)輪詢不實(shí)時(shí)

什么是輪詢?我擦,這個(gè)該怎么解釋咧。

舉個(gè)栗子,在火車上想上洗手間,擠到洗手間旁,卻發(fā)現(xiàn)洗手間有人,于是你只能回座位繼續(xù)等。過(guò)了N分鐘,又朝洗手間的方向擠過(guò)去,卻發(fā)現(xiàn)洗手間還是有人,又只能回坐等。這么一而再,再而三的每隔N分鐘去洗手間查看洗手間是否有蹲位,這就是輪詢。

webim用輪詢的方式拉取消息會(huì)存在什么問(wèn)題?

webim每隔N分鐘,輪詢調(diào)用 “獲取消息”接口,有可能出現(xiàn)消息的延時(shí),某一時(shí)刻剛拉取完消息,突然又產(chǎn)生了一條新消息,這條消息就必須等到N分鐘之后,再次發(fā)起“獲取消息”輪詢時(shí),才有機(jī)會(huì)獲取到。

減小輪詢時(shí)間間隔是否能解決消息延時(shí)的問(wèn)題?

減小輪詢時(shí)間間隔的確可以縮短延時(shí)時(shí)間,但也不能保證消息絕對(duì)的實(shí)時(shí),同時(shí)又會(huì)產(chǎn)生新的問(wèn)題,絕大部分的輪詢調(diào)用,都沒(méi)有消息返回,造成服務(wù)端極大的資源浪費(fèi)。

很多人基于上述直覺(jué),認(rèn)為webim使用http長(zhǎng)輪詢的方式拉取消息,會(huì)導(dǎo)致消息有延時(shí),其實(shí),webim的http長(zhǎng)輪詢根本不是這么玩的。

三、長(zhǎng)輪詢實(shí)際怎么玩

消息連接

webim和webserver之間建立一條http連接,專門(mén)用作消息通道,這條連接叫http消息連接【見(jiàn)下圖】

 

 

消息連接的4大特性

1)沒(méi)有消息到達(dá)的時(shí)候,這個(gè)http消息連接將被夯住,不返回,由于http是短連接,這個(gè)http消息連接最多被夯住90秒,就會(huì)被斷開(kāi)(這是瀏覽器或者webserver的行為)

2)在1)的情況下,如果http消息連接被斷開(kāi),立馬再發(fā)起一個(gè)http消息連接【見(jiàn)下圖中的步驟1、2】

 

 

3)在1)和2)的配合下,瀏覽器與webserver之間將永遠(yuǎn)有一條消息連接在(極限情況下會(huì)出現(xiàn)4)),每次收到消息時(shí),這個(gè)消息連接就能及時(shí)將消息帶回瀏覽器頁(yè)面,并且在返回后,會(huì)立馬再發(fā)起一個(gè)http消息連接【見(jiàn)下圖中的步驟1、2、3】

 

 

4)如果消息到達(dá)時(shí),上一個(gè)http消息連接正在返回,沒(méi)有http消息連接可用(理論上http消息連接的返回是瞬時(shí)的,沒(méi)有連接可用出現(xiàn)的概率極小),則將消息暫存入消息池中,下一個(gè)消息連接到達(dá)后(上一個(gè)消息連接返回后,根據(jù)2)和3)會(huì)立馬返回新的消息連接,無(wú)等待時(shí)間),將消息帶回,并又立刻返回生成新的消息連接【見(jiàn)下圖中的步驟1、2、3、4、5、6、7】

 

 

上述1-4就能夠保證一直有一條http消息連接在,以保證webim消息推送的絕對(duì)實(shí)時(shí)性。

四、結(jié)論

webim通過(guò)http長(zhǎng)輪詢可以保證消息的絕對(duì)實(shí)時(shí)性。這種實(shí)時(shí)性的保證不是通過(guò)增加輪詢頻率來(lái)保證的,而是通過(guò)夯住http消息連接來(lái)保證的,在大部分時(shí)間沒(méi)有實(shí)時(shí)消息的情況下,這個(gè)http消息連接對(duì)于webserver的請(qǐng)求壓力是90秒1次,能夠大大節(jié)省了web服務(wù)器資源。

文章轉(zhuǎn)載自微信公眾號(hào)“架構(gòu)師之路”

責(zé)任編輯:趙寧寧 來(lái)源: 架構(gòu)師之路
相關(guān)推薦

2015-03-16 12:50:44

2013-08-22 10:17:51

Google大數(shù)據(jù)業(yè)務(wù)價(jià)值

2023-04-05 14:19:07

FlinkRedisNoSQL

2021-09-07 10:29:11

JavaScript模塊CSS

2017-05-22 10:33:14

PythonJuliaCython

2016-11-01 15:16:52

QQ狀態(tài)即時(shí)通訊

2022-12-21 15:56:23

代碼文檔工具

2013-12-31 09:19:23

Python調(diào)試

2023-05-23 13:59:41

RustPython程序

2013-12-17 09:02:03

Python調(diào)試

2013-07-26 10:15:29

云計(jì)算大數(shù)據(jù)Hadoop

2017-11-06 14:18:03

2020-08-25 08:56:55

Pythonawk字符串

2020-09-30 17:12:09

人工智能技術(shù)數(shù)據(jù)

2025-09-12 00:00:00

DevToolsJavaScript調(diào)試術(shù)

2015-04-09 11:27:34

2020-12-07 10:10:22

企業(yè)文化客戶體驗(yàn)

2021-05-20 08:37:32

multiprocesPython線程

2012-06-08 13:47:32

Wndows 8Vista
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)