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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

ios个推透传消息json接收不到_消息通讯——Websocket

發布時間:2025/3/20 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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請求有幾點不同:

  • GTE請求的地址不是類似/path/,而是以ws://開頭的地址;
  • 請求頭Upgrade:websocket和Connection: Upgrade表示這個連接將要被轉換為WebSocket連接;
  • Sec-WebSocket-Key是用于標識這個連接,并非用于加密數據;
  • Sec-WebSocket-Version指定了WebSocket的協議版本。
  • 隨后服務端如果接收該請求,就會返回響應,如下所示:

    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。

    其他特點:

  • 建立在TCP協議之上,服務器端的實現比較容易;
  • 與HTTP協議有著良好的兼容性。默認端口也是80和443,并且握手階段采用HTTP協議,因此握手時不容易屏蔽,能通過各種HTTP代理服務器;
  • 數據格式比較輕量,性能開銷小,通信高效;
  • 可以發送文本,也可以發送二進制數據;
  • 沒有同源限制,客戶端可以與任意服務器通信;
  • 協議標識符是ws(如果加密,則為wss),服務器網址就是URL。
  • ws://example.com:80/some/path

    瀏覽器支持:

    目前支持WebSocket的主流瀏覽器如下:

    • Chrome;
    • Firefox;
    • IE >= 10;
    • Sarafi >= 6;
    • Android >= 4.4;
    • IOS >= 8。

    客戶端實現:

    vue文件

    服務器端實現:

    server.js

    這里客戶端是node服務器,僅是一個簡單的示例。

    以上就是相關WebSocket技術知識的整理,希望對大家有用。

    總結

    以上是生活随笔為你收集整理的ios个推透传消息json接收不到_消息通讯——Websocket的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。