PHP使用WebSocket

WebSocekt的基礎這裏就不介紹了,網上一抓一大把,這裏來和大家討論一下一些坑

解碼和編碼

這個是協議規定的,從客戶端發送給服務端的數據一定是經過特殊編碼的,如果使用的是HTML5的websocket,在使用send函數的時候會自動進行編碼,這個我們不用管,不過編碼規則還是要了解一點的,畢竟服務端發數據給客戶端或者解碼是需要我們自己解析的,權威的文檔可以看這裏(所以做it英文還是要好啊。。。):
websocket_RFC
這裏貼一張裏面的圖:

這裏寫圖片描述

裏面各個字段的意思還請自己查看文檔
這裏只想說一下,服務端返回的數據必須使用編碼規則編碼,不然客戶端收不到數據,接受到的數據也需要進行解碼,不然是亂碼。

關閉或刷新網頁

刷新網頁其實執行兩個步驟,先關閉連接,再重新連接,這裏討論一下關閉連接,客戶端關閉連接會向服務端發送一個信息,表面自己即將斷開socket連接,這個信息只有一個字節,在chrome和firefox上都是 10001000 ,這個信息的意思就要對照上面那張圖來理解了,第一位表示這是最後一段信息,即後面沒有信息,2-4位是留着將來用的,重要的就是5-8位,opcode,即1000,轉爲16進制就是ox8,這是什麼意思呢:

這裏寫圖片描述

沒錯,他標誌這是發起一個斷開連接的信息,所以當你接受到這樣一條信息,你要明白客戶端已經斷開連接了。
然而在safari關閉瀏覽器時,發送過來的是 0000 0000 ,這個不清楚怎麼回事。有明白的同學煩請指教。

如有不準確的地方煩請指正,共同學習共同進步

發佈了29 篇原創文章 · 獲贊 22 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章