我有一個通過WebSockets連接到服務的Web應用程序。這個程序能正常工作在Chrome/Firefox瀏覽器的桌面,但是Chrome行動給出了錯誤:WebSockets在桌面瀏覽器中工作,但在Android版Chrome中失敗
WebSocket connection to 'ws://192.168.0.11:8080/' failed: One or more reserved bits are on: reserved1 = 0, reserved2 = 1, reserved3 = 0
服務器使用最近的libwebsockets版本。
在初始連接期間發生此錯誤,於是一大堆JSON數據通過多個2048字節幀發送到客戶端。
服務器公開了幾個不同的WebSocket。他們中的一些失敗,在其他方面也:
Could not decode a text frame as UTF-8.
......還有......
Unrecognized frame opcode: 6
可以預測哪些失敗了,哪些應該繼承尚未顯露出來的模式。
我懷疑某種形式的框架問題在這裏。我回顧了WireShark中的消息,他們看起來對我很正確。標題看起來是正確的。
爲什麼在桌面版Chrome/Firefox中可以正常工作,但在Android版Chrome中會失敗?
我已經從WireShark [此處下載](https://mega.co.nz/#!m4AG2DjJ!mKMmgYlRyPg0SdianSqMmDi_mdRQEFYNTyDyHjONqzA)放置捕獲。 –
發生這些錯誤的原因是客戶端無法正確解碼幀,所以它試圖從一堆位中理解,有時候解析頭文件失敗,有時候這些位看起來像是頭文件,但是這些文件只是垃圾文件。您是否可以強制您的應用始終提供128個字節的幀並查看?這可能是Chrome Android處理部分框架的錯誤。這很有意思,請保留帖子以更新您的發現。 – vtortola
@vtortola,請參閱我的回答以獲取最新發現和解決方法。 –