我使用Uint8Arrays和ArrayBuffers發送二進制數據。我可以通過每次創建一個新的Uint8Array和ArrayBuffer來成功發送它。WebSockets和重複使用ArrayBuffers發送
出於性能方面的考慮(減少垃圾等),我想重複使用相同的Uint8Array和ArrayBuffer作爲下一條消息。在這種情況下,每個消息具有相同的字段,所以字節長度不成問題。我只是覆蓋它。
但是,重用會導致發送的數據不正確。
我最好的猜測是,我正在修改ArrayBuffer的下一條消息,而前一條消息仍在發送過程中。這是問題嗎?如果是這樣,有沒有什麼辦法可以檢測到ArraySuffer不再被WebSocket使用,因此我可以將它池化?如果不是,還有什麼可能導致這種行爲?
謝謝!
你能分享一段代碼嗎? –
您是否在Chrome和Firefox中遇到同樣的問題?你是否正在調用send並立即在相同的執行上下文中修改ArrayBuffer?怎麼樣設置一個非常短的setTimeout(即1)然後修改它。 – kanaka