日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

HTTP消息推送原理

發(fā)布時間:2023/12/31 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HTTP消息推送原理 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

這里我們從系統(tǒng)結(jié)構(gòu)的層面來看消息推送系統(tǒng)(Push Server)的基本原理。

首先需要了解幾個基本的概念:

HTTP長連接

翻譯自http keep-alive connection和http?persistent connection,又叫http?connection reuse,網(wǎng)上也有反過來翻譯成http long connection。

下面這個圖來自wikipedia,講解了http長連接是在一個TCP連接的基礎(chǔ)之上,發(fā)送多個HTTP請求以及接收多個HTTP響應(yīng),這是為了避免每一次請求都去打開一個新的連接。在HTTP 1.1標準中,所有的請求都認為是長連接。


在這里的消息推送系統(tǒng)中,HTTP長連接的作用就是向服務(wù)器發(fā)送請求,然后一直等待服務(wù)器的返回數(shù)據(jù)。這就相當于客戶端在“監(jiān)聽”服務(wù)器了,可以隨時接收來自服務(wù)器的消息。OK,lolita is ready to be pushed!

同步與異步

同步:IO操作將導(dǎo)致請求進程阻塞,直到IO操作完成。也就是說客戶端在發(fā)送請求后,必須得在服務(wù)端有回應(yīng)后才發(fā)送下一個請求。

異步:IO操作不導(dǎo)致請求進程阻塞。也就是說客戶端在發(fā)送請求后,不必等待服務(wù)端的回應(yīng)就可以發(fā)送下一個請求。

同步與異步說的是客戶端與服務(wù)器端之間的一種通信方式。

阻塞與非阻塞

阻塞:服務(wù)器端的線程或者進程沒有處理完數(shù)據(jù)的時候,不會返回,線程或者進程回被掛起,不再響應(yīng)其他請求。

非阻塞:服務(wù)器端在沒有處理完的時候,會立即返回,不會掛起線程或者進程,可以繼續(xù)響應(yīng)其他請求。

阻塞與非阻塞說的是服務(wù)器端對請求的處理方式。

在消息推送系統(tǒng)中,客戶端+服務(wù)器端一起,使用的是異步非阻塞。

消息推送系統(tǒng)(Push Server)的結(jié)構(gòu)和原理

好了,接下來是就是消息推送系統(tǒng)(Push Server)的結(jié)構(gòu)和原理了:


  • 客戶端發(fā)出一個http長連接請求,然后等待服務(wù)器的響應(yīng)。這個請求是異步的,所以客戶端可以繼續(xù)工作,比如發(fā)起其他ajax請求等等。這個時候客戶端就是一個待推倒的小蘿莉了。
  • 服務(wù)器接到請求之后,并不立即發(fā)送出數(shù)據(jù),而是hold住這個connecton。這個處理是非阻塞的,所以服務(wù)器可以繼續(xù)處理其他請求。
  • 在某個時刻,比如服務(wù)器有新數(shù)據(jù)了,服務(wù)器再主動把這個消息推送出去,即通過之前建立好的連接將數(shù)據(jù)推送給客戶端。
  • 客戶端收到返回。這個時候就可以處理數(shù)據(jù),然后再次發(fā)起新的長連接。
  • 基本原理就是這么簡單。


    原文轉(zhuǎn)載于https://www.pureweber.com/article/push-server-principle/


    總結(jié)

    以上是生活随笔為你收集整理的HTTP消息推送原理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。