使用websocket通訊傳輸protobuf訊息的時候,decode的時候出錯了:
RangeError: index out of range: 2499 + 10 > 2499
Error: invalid wire type 4 at offset 1986
出現這種錯誤的時候,99%是因為proto裡面的訊息型別和服務端傳送的訊息型別不一致導致的。
解決這個問題的辦法有兩種
1.訊息型別要和服務端傳送的訊息型別每個欄位都要保持一致,這個可能對於你想解析別人資料的時候比較困難,因為你要明確知道每個欄位的訊息型別。
2.忽略這個你不知道的訊息欄位型別,就是不在proto檔案裡定義了,就當它不存在
比如我這裏定義了直播間訊息相關的proto檔案:
因為這個訊息是抖音直播間傳送的,我也不確定裡面的訊息到底有哪些型別,所以就可以只要我們需要的的幾個訊息:
用這樣的訊息結構去解析就不會有錯了。