亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

德令哈市| 蚌埠市| 胶南市| 集贤县| 和顺县| 浙江省| 呼伦贝尔市| 定陶县| 姜堰市| 平泉县| 呼和浩特市| 综艺| 姚安县| 威海市| 鄄城县| 凉山| 莒南县| 银川市| 深水埗区| 中宁县| 安平县| 黑山县| 东山县| 临泽县| 山西省| 青田县| 凤台县| 河间市| 邯郸县| 新竹市| 光山县| 桐柏县| 云和县| 元江| 萨迦县| 东兴市| 宝山区| 延庆县| 浏阳市| 黔南| 电白县|