91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

websocket 出現 Could not decode a text frame as UTF-8錯誤怎么解決

發布時間:2020-10-28 17:30:04 來源:億速云 閱讀:817 作者:Leah 欄目:開發技術

websocket 出現 Could not decode a text frame as UTF-8錯誤怎么解決?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

當你使用websocket傳輸數據時,偶爾可能會出現下面的錯誤

websocket Could not decode a text frame as UTF-8

網上很多其他文章一上來就介紹什么是websocket,數據協議等等,對解決問題沒有多大幫助。

有一些文章說要改開頭數字10000001等等,很多同學不知所云。

下面說說個人的經驗,不一定對,希望對大家有個幫助。

首先如果你使用的是相對成熟的websocket框架的話,一般不會出現這個問題。

而出現這個問題的原因,絕大部分是客戶端和服務器端的指定的 “binaryType” 不一致。

要解決問題,首先要弄清楚問題所在,我們先了解一下這個binaryType是什么:

WebSocket.binaryType 返回websocket連接所傳輸二進制數據的類型。

它有兩個值:

 "blob"  如果傳輸的是 Blob 類型的數據。

"arraybuffer"  如果傳輸的是 ArrayBuffer 類型的數據。

通常,如果不指定這個值,默認一般是:blob   顧名思義就是任意對象

正常而言,如果binaryType=blob,傳輸字符串(String)類型,一般沒有什么問題。但如果這個時候傳一個 byte[] 數組或者二進制數組,可能就會出現Could not decode a text frame as UTF-8 的問題。

對于websocket而言,如果直接傳輸txt文本。那么opcode一般等于1(opcode是什么可以自行百度)。而直接send byte[] 或者二進制數組時,opcode一般等于2。

當binaryType=blob時,一般會把數據直接當成字符串對象解析,此時如果傳遞的是byte[]。就會報Could not decode a text frame as UTF-8 的問題。

解決問題:

一般服務器端和客戶端指定相同的binaryType即可解決問題。如果傳遞二進制數據。指定binaryType=arraybuffer,即可獲取數據原始二進制數組,這樣不管傳遞的是什么,都不會報錯,在自行根據情況處理。

當然,如果是你直接封裝的WebSocketFrame,則opcode要指定為二進制

在js中指定:

socket.binaryType='arraybuffer'  

關于websocket 出現 Could not decode a text frame as UTF-8錯誤怎么解決問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

凤山市| 南靖县| 清水河县| 德令哈市| 绥芬河市| 稻城县| 博湖县| 南宁市| 莆田市| 尖扎县| 安丘市| 梨树县| 阳山县| 塔城市| 南康市| 康定县| 喀什市| 康保县| 东莞市| 巴东县| 孝昌县| 南溪县| 德阳市| 榆林市| 八宿县| 韩城市| 西安市| 普兰县| 江陵县| 长春市| 赤峰市| 宣威市| 休宁县| 定襄县| 正宁县| 当雄县| 夏津县| 祁连县| 太仓市| 南华县| 和平区|