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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

服务器发送消息技术,知识科普:IM聊天应用是如何将消息发送给对方的?(非技术篇)...

發布時間:2024/4/11 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 服务器发送消息技术,知识科普:IM聊天应用是如何将消息发送给对方的?(非技术篇)... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文由作者“鞏鵬軍“原創發布于微信公眾號“鞏鵬軍”,原題《IM即時通訊 - 消息是怎么送達的?》,即時通訊收錄時有修訂和改動,感謝作者的分享。

即時通訊網收錄和修訂,已征得原作者同意。如需轉載,請注明詳細出處,請尊重原作者的勞動。

1、引言

溝通是人類的最基本需求,復雜多變的溝通內容、溝通方式,正是人類文明之所以如此璀璨的關鍵所在。

timg-(1).jpg (24.28 KB, 下載次數: 130)

2?年前 上傳

在自然界中,要完成一件事情的溝通,我們可以直接通過聲音傳遞給對方,這是再平常不過的事了(靠“吼”就能解決)。

隨著計算機的普及,互聯網改變了我們的生活,甚至改變了我們的溝通方式?,F在,“有什么事微信或QQ上找我”已經是很多的人口頭禪了。

timg (2).jpeg (10.75 KB, 下載次數: 134)

2?年前 上傳

那么,作為不懂技術的普通人,有沒有想過,你每次使用QQ或微這種IM聊天應用時,你所發送的消息,是如何被計算機送達給對方的?(這顯然不可能靠“吼”解決 ^_^)

本文將從非技術人員的視角,為你講解一下IM聊天應用中的聊天消息是怎么發送的。

2、關于作者

a.jpg (13.8 KB, 下載次數: 139)

2?年前 上傳

鞏鵬軍:專注移動開發十多年,熱愛即時通訊技術。個人微信公眾號:“鞏鵬軍”。

3、閱讀對象

本文適合非技術背景的讀者閱讀,如您喜歡本文,則下列文章您也可能喜歡:

如果您是專業技術人員,則跟本文相關的專業技術知識等,可以以下文章中找到:

4、在微信里,我們發送一條聊天消息是如此簡單

李雷在手機上打開微信(IM客戶端),在聊天輸框中輸入“Hello!”,點擊發送。幾乎是瞬間,韓梅梅手機上的微信(IM客戶端)就會顯示李雷的頭像后面跟著“Hello!”。

整個過程如下圖所示:

1.jpg (58.17 KB, 下載次數: 123)

2?年前 上傳

▲ 一條聊天消息發送的全過程

從上面的圖示可以看到,整個過程涉及三大部分:

1)李雷手機上的IM客戶端(微信);

2)IM服務端;

3)韓梅梅手機上的IM客戶端(微信)。

下面,我們逐一介紹每個部分的具體工作原理。

5、消息發送者:發送端是怎么工作的?

先看看發送端,李雷手機上的IM客戶端中發生了什么?

2.jpg (46.76 KB, 下載次數: 105)

2?年前 上傳

從上圖可以看出,發送一條信息經過三個步驟:

1)消息編輯:

李雷操作鍵盤輸入要發送的文字,點擊“發送”按鈕。這一切都發生在IM客戶端的界面模塊中。類似用筆在信紙上寫信,鍵盤就是筆,聊天框就是信紙;

2)消息入庫:

IM客戶端中的數據模塊會先將聊天內容“Hello!”加上誰發給誰等信息,按標準格式打包為一條IM消息,并存入本地數據庫。這類似信紙裝入信封,填寫地址,投入郵箱的過程。一條IM消息就是一封信,本地數據庫就是李雷家的郵箱;

3)消息發送:

IM客戶端中的網絡模塊通過長連接將IM消息發給IM服務端。這類似郵遞員將信件匯總發往郵政局。網絡模塊就是郵遞員,IM服務端就是郵政局。(長連接是IM客戶端跟IM服務端一直保持的網絡鏈路)。

6、消息“中轉站”:IM服務端是怎么工作的?

擔負“郵政局”職責的IM服務端是IM世界中全知全能的神,它認識所有人,經手所有消息,跟每個人都一直保持聯系(長連接)。

3.jpg (37.9 KB, 下載次數: 123)

2?年前 上傳

每條消息在IM服務端中都要至少經過以下處理:

1)消息接收:

長連接服務從和李雷的長連接接收到“Hello!”的IM消息。IM服務端跟所有登錄的IM客戶端保持長連接(一條一直活躍的網絡鏈路,每個客戶端一條),長連接上定時會有心跳消息來監測客戶端的在線離線狀態,心跳消息就像郵遞員每天都會在郵政局和郵箱之間巡回一樣;

2)消息驗證:

用戶服務查詢IM消息的目標人韓梅梅,以及發送人李雷和目標人韓梅梅是否好友關系,確保韓梅梅是真實存在而非虛構的,并且韓梅梅愿意接收李雷的消息,否則會給李雷退信。(一般IM服務端會將IM消息的副本存入數據庫中備份);

3)消息轉發:

在長連接服務中找到跟韓梅梅手機上IM客戶端保持的長連接,并將消息發送給韓梅梅。

7、消息接收者:接收端又是怎么工作的呢?

下面看看韓梅梅手機上發生了什么?

4.jpg (43.78 KB, 下載次數: 118)

2?年前 上傳

韓梅梅手機上的IM客戶端和李雷(發送者)的是一樣的,但處理步驟是不同的:

1)消息接收:

網絡模塊通過跟IM服務端保持的長連接接收IM消息;

2)消息入庫:

網絡模塊會將IM消息存入本地數據庫,即信件投入了韓梅梅家的郵箱。網絡模塊就是郵遞員,本地數據庫就是韓梅梅家的郵箱;

3)消息展示:

界面模塊獲取發送人頭像,和消息內容一起顯示在聊天界面上。

經過上述過程,韓梅梅在自己手機上就看到了李雷發過來的“Hello!”,因為李雷和韓梅梅都是一直和服務器保持長連接,所以上述過程是瞬間完成的,李雷和韓梅梅感覺就像面對面聊天一樣方便。這也是Instant Messaging名字的來歷。

(原文鏈接:點擊進入)

總結

以上是生活随笔為你收集整理的服务器发送消息技术,知识科普:IM聊天应用是如何将消息发送给对方的?(非技术篇)...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。