HTTP消息推送原理
這里我們從系統結構的層面來看消息推送系統(Push Server)的基本原理。
首先需要了解幾個基本的概念:
HTTP長連接
翻譯自http keep-alive connection和http?persistent connection,又叫http?connection reuse,網上也有反過來翻譯成http long connection。
下面這個圖來自wikipedia,講解了http長連接是在一個TCP連接的基礎之上,發送多個HTTP請求以及接收多個HTTP響應,這是為了避免每一次請求都去打開一個新的連接。在HTTP 1.1標準中,所有的請求都認為是長連接。
 
 
在這里的消息推送系統中,HTTP長連接的作用就是向服務器發送請求,然后一直等待服務器的返回數據。這就相當于客戶端在“監聽”服務器了,可以隨時接收來自服務器的消息。OK,lolita is ready to be pushed!
同步與異步
同步:IO操作將導致請求進程阻塞,直到IO操作完成。也就是說客戶端在發送請求后,必須得在服務端有回應后才發送下一個請求。
異步:IO操作不導致請求進程阻塞。也就是說客戶端在發送請求后,不必等待服務端的回應就可以發送下一個請求。
同步與異步說的是客戶端與服務器端之間的一種通信方式。
阻塞與非阻塞
阻塞:服務器端的線程或者進程沒有處理完數據的時候,不會返回,線程或者進程回被掛起,不再響應其他請求。
非阻塞:服務器端在沒有處理完的時候,會立即返回,不會掛起線程或者進程,可以繼續響應其他請求。
阻塞與非阻塞說的是服務器端對請求的處理方式。
在消息推送系統中,客戶端+服務器端一起,使用的是異步非阻塞。
消息推送系統(Push Server)的結構和原理
好了,接下來是就是消息推送系統(Push Server)的結構和原理了:
 
 
基本原理就是這么簡單。
 
 
原文轉載于https://www.pureweber.com/article/push-server-principle/
 
 
總結
以上是生活随笔為你收集整理的HTTP消息推送原理的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: py将dicm格式图片转为jpg格式
- 下一篇: Cocoapods里Podfile与Po
