ios个推透传消息json接收不到_消息通讯——Websocket
說起即時通訊大家應該都聽過,像各種聊天軟件用到的即時通訊技術是最多的。另外開發過程中實現消息推送最傳統的做法就是輪詢,即按照特定時間間隔由瀏覽器對服務器發送請求,以獲取最新消息,這種傳統模式帶來很明顯的缺點,即瀏覽器需要不斷的向服務器發送請求,然而HTTP請求可能包含較長的頭部,其中真正有效的數據可能只是很小的一部分,顯然這樣回浪費很多帶寬等資源。
這種情況下,HTML5定義了WebSocket協議,能更好的節省服務器資源和帶寬,并且能夠更實時地進行通訊。
WebSocket是一種在單個TCP連接上進行全雙工通信的協議。
WebSocket使得客戶端和服務端之間的數據交換變得更加簡單,允許服務端主動向客戶端推送數據。在WebSocket API中,瀏覽器和服務器只需要完成一次握手,兩者之間就直接可以創建持久性的連接,并進行雙向數據傳輸。
websocket運用場景:
原理
WebSocket并不是全新的協議,而是利用了HTTP協議來建立連接。
首先,WebSocket連接必須由瀏覽器發起,因為請求協議是一個標準的HTTP請求,如下所示:
GET ws://localhost:8181 HTTP/1.1 Host: localhost Upgrade: websocket Connection: Upgrade Origin: http://localhost:8181 Sec-WebSocket-Key: client-random-string Sec-WebSocket-Version: 13該請求和普通的HTTP請求有幾點不同:
隨后服務端如果接收該請求,就會返回響應,如下所示:
HTTP/1.1 101 Switching Protocols Upgrade: websocket Connection: Upgrade Sec-WebSocket-Accept: server-random-string該響應代碼101表示本次連接的HTTP協議即將被更改,更改后的協議就是Upgrade: websocket指定的WebSocket協議。
為了創建WebSocket連接,需要通過瀏覽器發送請求,然后服務器端響應,這個過程通常稱為“握手”。
版本號和子協議規定了雙方能理解的數據格式,以及是否支持壓縮等等。如果僅使用WebSocket的API,就不需要關心這些。
現在,一個WebSocket連接就建立成功,瀏覽器和服務器就可以隨時發送消息給對方。消息有兩種,一種是文本,一種是二進制數據。通常,我們可以發送JSON格式的文本,這樣處理起來方便些。
這里有個比較有意思的點,為什么WebSocket連接可以實現全雙工通信而HTTP連接不行呢?實際上HTTP協議是建立在TCP協議之上的,TCP協議本身就實現了全雙工通信,但是HTTP協議的請求 - 應答機制限制了全雙工通信。WebSocket連接建立以后,其實只是簡單規定了以下:“接下來咱們通信不用HTTP協議了,直接互發數據吧”。
HTTP協議與WebSocket協議對比:
WebSocket目前支持兩種統一資源標識符ws和wss,類似于HTTP和HTTPS。
其他特點:
瀏覽器支持:
目前支持WebSocket的主流瀏覽器如下:
- Chrome;
- Firefox;
- IE >= 10;
- Sarafi >= 6;
- Android >= 4.4;
- IOS >= 8。
客戶端實現:
vue文件
服務器端實現:
server.js
這里客戶端是node服務器,僅是一個簡單的示例。
以上就是相關WebSocket技術知識的整理,希望對大家有用。
總結
以上是生活随笔為你收集整理的ios个推透传消息json接收不到_消息通讯——Websocket的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql数据库项目例子_很实用的MyS
- 下一篇: iis php mysql 一键安装_L