中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

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

招远市| 弥渡县| 左贡县| 板桥市| 五华县| 济阳县| 阜南县| 高邮市| 荔波县| 海丰县| 二连浩特市| 宁都县| 石景山区| 兴文县| 长阳| 吴江市| 涟源市| 七台河市| 香河县| 仙游县| 临潭县| 漠河县| 夏邑县| 蒲江县| 元谋县| 太保市| 合水县| 庆阳市| 叙永县| 贵港市| 无为县| 磴口县| 武乡县| 台湾省| 来宾市| 陆河县| 广灵县| 岳池县| 乌拉特后旗| 彩票| 宜宾县|