日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

IM 推送保障及网络优化详解(三):如何在弱网环境下优化大数据传输?

發(fā)布時(shí)間:2024/4/14 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 IM 推送保障及网络优化详解(三):如何在弱网环境下优化大数据传输? 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

對(duì)于移動(dòng) App 來說,IM 功能正變得越來越重要,它能夠創(chuàng)建起人與人之間的連接。社交類產(chǎn)品中,用戶與用戶之間的溝通可以產(chǎn)生出更好的用戶粘性。
在復(fù)雜的 Android 生態(tài)環(huán)境下,多種因素都會(huì)造成消息推送不能及時(shí)達(dá)到客戶端。另外,不穩(wěn)定的移動(dòng)網(wǎng)絡(luò)也給數(shù)據(jù)傳輸?shù)乃俾屎涂煽啃栽黾恿苏系K。
本文詳解了網(wǎng)易云信 IM SDK 在應(yīng)對(duì)弱網(wǎng)環(huán)境、移動(dòng)端硬件限制以及 Android 復(fù)雜的生態(tài)現(xiàn)狀時(shí)的探索與心得.如何實(shí)現(xiàn)不影響用戶體驗(yàn)的后臺(tái)保活,改善的長(zhǎng)連接加推送組合方案,以及在弱網(wǎng)環(huán)境大數(shù)據(jù)傳輸?shù)膬?yōu)化實(shí)踐。

相關(guān)閱讀推薦:

  • 網(wǎng)易云信 IM 推送保障及網(wǎng)絡(luò)優(yōu)化詳解(一)如何做長(zhǎng)連接加推送組合方案
  • 網(wǎng)易云信 IM 推送保障及網(wǎng)絡(luò)優(yōu)化詳解(二)如何實(shí)現(xiàn)不影響用戶體驗(yàn)的后臺(tái)?;?

在即時(shí)通訊研發(fā)當(dāng)中,音視頻通話對(duì)實(shí)時(shí)性要求很高,但可以容忍一定的丟包,所以選擇 UDP 私有協(xié)議來做為底層的傳輸協(xié)議。如果只是普通的 IM 消息,對(duì)網(wǎng)絡(luò)情況其實(shí)不是太敏感,最多也就是慢一點(diǎn),菊花轉(zhuǎn)的久一點(diǎn)。但對(duì)于這種視頻電話,如果網(wǎng)絡(luò)差了,發(fā)生了經(jīng)常性卡頓,或者是延遲很高,圖像出現(xiàn)花屏,音視頻不同步了,這個(gè)功能其實(shí)也就相當(dāng)于廢棄了。而且,音視頻數(shù)據(jù)量本身也比較大,在弱網(wǎng)環(huán)境下發(fā)生問題的概率就更大了。
為了提高弱網(wǎng)下的實(shí)時(shí)音視頻的通話效果,需要使用相關(guān)方案來做 QoS 保障:主要包括了基于 UDP 協(xié)議的擁塞控制、前向糾錯(cuò) FEC 技術(shù)及相關(guān)的重傳技術(shù)。同時(shí)網(wǎng)絡(luò)層需要能夠?qū)崟r(shí)的探測(cè)到網(wǎng)絡(luò)狀態(tài),作為底層調(diào)整 QoS 策略的依據(jù),同時(shí)需要回調(diào)上層,來動(dòng)態(tài)調(diào)整音視頻的碼率,做到音視頻碼率自適應(yīng)。通過上面的 QoS 保障,實(shí)際測(cè)試在 60% 的隨機(jī)丟包弱網(wǎng)環(huán)境下,音視頻通話還能夠正常進(jìn)行。
下面再來看看對(duì)于 HTTP 的優(yōu)化。圖片語音是 IM 的必需元素,而且本身數(shù)據(jù)比較大。在弱網(wǎng)環(huán)境下,快速的上傳下載,更少的等待時(shí)間可以帶來更好的用戶體驗(yàn)。


斷點(diǎn)續(xù)傳可以減少因網(wǎng)絡(luò)原因?qū)е碌闹貜?fù)傳輸,減少傳輸時(shí)間,節(jié)省流量。
圖片預(yù)加載技術(shù)可以根據(jù)不用網(wǎng)絡(luò)情況,在收到消息后,就加載不同素質(zhì)的預(yù)覽圖片,甚至直接將原圖預(yù)加載,做到用戶點(diǎn)開即看。
圖片和語音文件并沒有通過長(zhǎng)連接收發(fā),而是通過 HTTP 去做上傳下載。傳統(tǒng)上通過 HTTP 上傳時(shí),文件會(huì)分為一片一片,傳完一片,收到回包,才會(huì)穿下一個(gè)分片,一直到最終傳輸完成。可以看到,服務(wù)器返回 ack 這段時(shí)間,上傳通道其實(shí)是空閑的,如果把這段時(shí)間利用起來,可以節(jié)約不少上傳時(shí)間。Pipeline 就是為此而來。通過重疊利用 http 請(qǐng)求的響應(yīng)等待時(shí)間,加快傳輸速度。使用 Pipeline,需要修改 HttpClient,同時(shí)還需要服務(wù)器提供支持。視網(wǎng)絡(luò)具體情況,使用 Pipeline 后,一次上傳可以減少 20% 至 30% 的時(shí)間。
常規(guī)發(fā)送語音消息需要這幾步,先錄音,然后計(jì)算 hash 值,然后上傳,上傳完畢后,服務(wù)器計(jì)算一下校驗(yàn)和,通過后語音消息發(fā)送成功。在前面錄制語音時(shí),網(wǎng)絡(luò)其實(shí)也是空閑的。把這段時(shí)間利用起來,則可以減少后面上傳步驟的時(shí)間。優(yōu)化后,流程就變成這樣。在錄制的過程中,每錄完一段,就作為一個(gè)分片直接上傳。直到最后錄完,計(jì)算好 hash,再把最后一個(gè)分片帶上 hash 信息上傳。這里除了客戶端的改動(dòng),也是需要服務(wù)器支持。服務(wù)器在開始接收時(shí),很多信息都不明確,需要開辟緩存來記錄整次上傳過程。對(duì)于比較差的網(wǎng)絡(luò),邊錄邊傳的效果會(huì)更好,畢竟純語音的比特率并不高,基本都能做到錄完就傳完。


隨著即時(shí)通訊以及音頻處理和壓縮技術(shù)的不斷發(fā)展,效果更好、適用范圍更廣、性能更高的算法和新的技術(shù)必將不斷涌現(xiàn),如果你有好的技術(shù)或者分享,歡迎關(guān)注網(wǎng)易云信官方博客和 GitHub:

關(guān)注更多技術(shù)干貨內(nèi)容:網(wǎng)易云信博客
歡迎關(guān)注網(wǎng)易云信 GitHub
歡迎關(guān)注網(wǎng)易云信官網(wǎng)

總結(jié)

以上是生活随笔為你收集整理的IM 推送保障及网络优化详解(三):如何在弱网环境下优化大数据传输?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。