server端推送消息机制
推送技術相關請參加WIKI:?https://zh.wikipedia.org/wiki/%E6%8E%A8%E9%80%81%E6%8A%80%E6%9C%AF
?
場景:
監控系統:后臺硬件溫度、電壓發生變化;
即時通信系統:其它用戶登錄、發送信息;
即時報價系統:后臺數據庫內容發生變化;
即時信息系統:微博、說說實時推送
客戶端驅動無法滿足上述場景要求。可采用以下幾種方式
? ? Ajax輪詢:異步響應機制,即通過不間斷的客戶端?Ajax 請求,去發現服務端的變化。這種方式由于是客戶端主動連接的,所以會有一定程度的延時,并且服務器的壓力也不小。
? ?長輪詢:原理是客戶端發出一個http長連接請求,然后等待服務器的響應,服務器接到請求之后,并不立即發送出數據,而是hold住這個Connecton。這個處理是非阻塞的,所以服務器可以繼續處理其他請求。在某個時刻,比如服務器有新數據了,服務器再主動把這個消息推送出去,即通過之前建立好的連接將數據推送給客戶端。客戶端收到返回。這個時候就可以處理數據,然后再次發起新的長連接。服務器壓力一般,實時性很高。Servlet 3.0開始已經支持該技術。sina微博就是使用的原生Servlet 3實現的消息推送。
套接字:可以利用 Flash 的 XMLSocket 類或者 Java 的 Applet 來建立 Socket 連接,實現全雙工的服務器推送,然后通過 Flash 或者Applet 與 JavaScript 通信的接口來實現最終的數據推送。但是這種方式需要 Flash 或者 JVM 的支持,同樣不太合適于終端用戶。
? ? HTML5的WebSocket:這種方式其實與套接字一樣,但是這里需要單獨強調一下:它是不需要用戶而外安裝任何插件的。HTML5 提供了一個 WebSocket 的 JavaScript 接口,可以直接與服務端建立Socket 連接,實現全雙工通信,這種方式的服務器推送就是完全意義上的服務器推送了,沒有半點模擬的成分,只是現階段支持 HTML5 的瀏覽器并不多,而且一般老版本的各種瀏覽器基本都不支持。不過 HTML5 是一套非常好的標準,在將來,當HTML5 流行起來以后將是我們實現服務器推送技術的不二選擇。
?
參考文章:http://blog.csdn.net/majian_1987/article/details/8489488
轉載于:https://www.cnblogs.com/guochunyi/p/5728548.html
總結
以上是生活随笔為你收集整理的server端推送消息机制的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CTF常用python库PwnTools
- 下一篇: SQL SERVER 2016研究三