好奇心--微信QQ的撤回功能

今天突然好奇撤回功能是怎么實現(xiàn)的,因此查閱了一些資料。

其中,有一篇資料詳細(xì)的解說了微信撤回功能的實現(xiàn),在此復(fù)述一下。

微信的每一條消息,即我們所發(fā)出的消息中會自帶UniqueMsgID,據(jù)說這個消息ID是全球唯一的ID(全球唯一的消息ID其實不難哈,可以通過時間戳+發(fā)送者ID+接受者ID,由于發(fā)送者ID與接受者ID的長度也是不一致的,因此消息ID也是完全不一樣的,包括長度也有可能是不一樣的。以上純屬個人YY)。因此,發(fā)送消息實質(zhì)上會發(fā)送兩個內(nèi)容,即消息體+UniqueMsgID。用戶A發(fā)送了一條消息給用戶B,思慮一番感覺有不合適的地方,決定撤回消息,長按選擇撤回功能,撤回功能被觸發(fā),用戶A手機(jī)端給服務(wù)器發(fā)送了UniqueMsgID,服務(wù)器要對比一下時間戳,是不是超過了兩分鐘,超過了就不再轉(zhuǎn)發(fā)該指令,而是返回一條消息給用戶A;要是沒有超過兩分鐘,服務(wù)器轉(zhuǎn)發(fā)指令到用戶B手機(jī)端,比對了UniqueMsgID,獲取了要撤回的消息之后就實現(xiàn)撤回的效果...下面是一張盜來的圖...

說到這里,大致的邏輯已經(jīng)出來了,但是我似乎還有沒弄懂的地方hhh,用戶B手機(jī)端接收到了指令是如何執(zhí)行“撤回”效果的?在UI上對該消息進(jìn)行隱藏并且替換成“對方撤回了一條消息”嗎?emmm,明天問一下做開發(fā)的同事好了hhh。

我所看的文章后面還有提及,撤回的時間長度為啥是兩分鐘,我感覺分析得比較有道理,兩分鐘之內(nèi)尚未查看消息的可能性是比較大的,隨著時間長度的增加,消息被閱讀的可能性則更大,如果對方已經(jīng)看到了消息而自己還執(zhí)行了撤回操作,可能會尷尬...其實2分鐘之內(nèi),消息被閱讀的可能性也很大,這個時間長度的選取,是不是有大數(shù)據(jù)的功勞在呢...

關(guān)于撤回了消息還留下了痕跡,即:對方撤回了一條消息,有很多人好奇:既然都執(zhí)行了撤回,為什么不毫無痕跡的撤回還要留下這么一句話呢,有解讀說比起發(fā)送者,產(chǎn)品更注重閱讀者的用戶體驗~與此同時,撤回消息如果沒有痕跡的話,會破壞上下文的完整性,這個解讀我還是很贊同的。

用戶體驗的重要性已經(jīng)深入人心了,在此我只想說,用戶體驗至上的產(chǎn)品,請在給我來一打!對鵝廠的喜愛一天比一天嚴(yán)重。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 點擊查看原文 Web SDK 開發(fā)手冊 SDK 概述 網(wǎng)易云信 SDK 為 Web 應(yīng)用提供一個完善的 IM 系統(tǒng)...
    layjoy閱讀 14,313評論 0 15
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,554評論 19 139
  • 個人翻譯,轉(zhuǎn)載請注明出處,謝謝! Adobe's Real Time Messaging Protocol 摘要 ...
    SniperPan閱讀 2,893評論 1 17
  • https://github.com/coderMyy/MYCoreTextLabel 圖文混排 , 實現(xiàn)圖片文...
    saman0閱讀 3,074評論 1 19
  • linux資料總章2.1 1.0寫的不好抱歉 但是2.0已經(jīng)改了很多 但是錯誤還是無法避免 以后資料會慢慢更新 大...
    數(shù)據(jù)革命閱讀 13,236評論 2 33

友情鏈接更多精彩內(nèi)容