网易云信即时通讯推送保障及网络优化详解(三):如何在弱网环境下优化大数据传输
對于移動 APP 來說,IM 功能正變得越來越重要,它能夠創建起人與人之間的連接。社交類產品中,用戶與用戶之間的溝通可以產生出更好的用戶粘性。
在復雜的 Android 生態環境下,多種因素都會造成消息推送不能及時達到客戶端。另外,不穩定的移動網絡也給數據傳輸的速率和可靠性增加了障礙。
本文詳解了?網易云信IM SDK?在應對弱網環境、移動端硬件限制以及 Android 復雜的生態現狀時的探索與心得.如何實現不影響用戶體驗的后臺保活,改善的長連接加推送組合方案,以及在弱網環境大數據傳輸的優化實踐。
相關閱讀推薦:
網易云信即時通訊推送保障及網絡優化詳解(一)如何做長連接加推送組合方案網易云信即時通訊推送保障及網絡優化詳解(二)如何實現不影響用戶體驗的后臺保活
在即時通訊研發當中,音視頻通話?對實時性要求很高,但可以容忍一定的丟包,所以選擇 UDP 私有協議來做為底層的傳輸協議。如果只是普通的 IM 消息,對網絡情況其實不是太敏感,最多也就是慢一點,菊花轉的久一點。但對于這種視頻電話,如果網絡差了,發生了經常性卡頓,或者是延遲很高,圖像出現花屏,音視頻不同步了,這個功能其實也就相當于廢棄了。而且,音視頻數據量本身也比較大,在弱網環境下發生問題的概率就更大了。
為了提高弱網下的實時音視頻的通話效果,需要使用相關方案來做 QoS?保障:主要包括了基于 udp 協議的擁塞控制、前向糾錯FEC 技術及相關的重傳技術。同時網絡層需要能夠實時的探測到網絡狀態,作為底層調整 QoS 策略的依據,同時需要回調上層,來動態調整音視頻的碼率,做到音視頻碼率自適應。通過上面的 QoS 保障,實際測試在60%的隨機丟包弱網環境下,音視頻通話還能夠正常進行。
下面再來看看對于 HTTP?的優化。圖片語音是 IM 的必需元素,而且本身數據比較大。在弱網環境下,快速的上傳下載,更少的等待時間可以帶來更好的用戶體驗。
斷點續傳可以減少因網絡原因導致的重復傳輸,減少傳輸時間,節省流量。
圖片預加載技術可以根據不用網絡情況,在收到消息后,就加載不同素質的預覽圖片,甚至直接將原圖預加載,做到用戶點開即看。
圖片和語音文件并沒有通過長連接收發,而是通過 HTTP?去做上傳下載。傳統上通過 HTTP 上傳時,文件會分為一片一片,傳完一片,收到回包,才會穿下一個分片,一直到最終傳輸完成。可以看到,服務器返回 ack 這段時間,上傳通道其實是空閑的,如果把這段時間利用起來,可以節約不少上傳時間。Pipeline 就是為此而來。通過重疊利用 http 請求的響應等待時間,加快傳輸速度。使用 pipeline,需要修改 HttpClient,同時還需要服務器提供支持。視網絡具體情況,使用 pipeline 后,一次上傳可以減少20%至30%的時間。
常規發送語音消息需要這幾步,先錄音,然后計算 hash?值,然后上傳,上傳完畢后,服務器計算一下校驗和,通過后語音消息發送成功。在前面錄制語音時,網絡其實也是空閑的。把這段時間利用起來,則可以減少后面上傳步驟的時間。優化后,流程就變成這樣。在錄制的過程中,每錄完一段,就作為一個分片直接上傳。直到最后錄完,計算好 hash,再把最后一個分片帶上hash 信息上傳。這里除了客戶端的改動,也是需要服務器支持。服務器在開始接收時,很多信息都不明確,需要開辟緩存來記錄整次上傳過程。對于比較差的網絡,邊錄邊傳的效果會更好,畢竟純語音的比特率并不高,基本都能做到錄完就傳完。
總結
以上是生活随笔為你收集整理的网易云信即时通讯推送保障及网络优化详解(三):如何在弱网环境下优化大数据传输的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据500%暴涨的神秘公式,顶级增长黑客
- 下一篇: 世界杯直播“三分天下”,视频平台如何实现