WebSocket 的通信机制
WebSocket 的通信機(jī)制
- 建立連接
- 數(shù)據(jù)傳輸
- 關(guān)閉連接
??這里假設(shè)通信的發(fā)送方名叫 client,接收方名叫 server,且接收方已事先開啟端口號(hào)。
建立連接
首先進(jìn)行 TCP 三報(bào)文握手,由 client 向 server 發(fā)起。這個(gè)過(guò)程如果不成功,后面的通信將不會(huì)進(jìn)行。具體來(lái)講,流程如下:
client 向 server 發(fā)送請(qǐng)求建立連接的報(bào)文。
server 向 client 發(fā)送確認(rèn)報(bào)文。
client 向 server 發(fā)送確認(rèn)報(bào)文。
client 向 server 發(fā)送 HTTP 報(bào)文,報(bào)文的內(nèi)容是請(qǐng)求將報(bào)文類型升級(jí)為 WebSocket。
server 向 client 發(fā)送 TCP 確認(rèn)報(bào)文。確認(rèn)【2】中的報(bào)文收到了。
server 向 client 發(fā)送 HTTP 響應(yīng)報(bào)文。表示同意升級(jí)報(bào)文類型。此時(shí)響應(yīng)的狀態(tài)碼是 101,響應(yīng)短語(yǔ)是 Switching Protocols。
client 向 server 發(fā)送 TCP 確認(rèn)報(bào)文。確認(rèn)【4】中的報(bào)文收到了。至此,WebSocket 的連接已建立。
數(shù)據(jù)傳輸
client 向 server 發(fā)送一個(gè) WebSocket 報(bào)文,報(bào)文中將包含 client 想要發(fā)送的數(shù)據(jù)。
server 向 client 發(fā)送 TCP 確認(rèn)報(bào)文。確認(rèn)【1】中的報(bào)文收到了。
之后,每次 client 向 server 發(fā)送數(shù)據(jù),都將重復(fù)【1】、【2】的流程。
關(guān)閉連接
-
此過(guò)程就是 TCP 四報(bào)文握手。具體來(lái)講,流程如下:
-
其中的一方主動(dòng)請(qǐng)求關(guān)閉連接。方便起見,這里假設(shè)先主動(dòng)的一方為 client。
client 向 server 發(fā)送 TCP 報(bào)文,請(qǐng)求關(guān)閉從 client 到 server 的單向連接。
-
server 向 client 發(fā)送 TCP 確認(rèn)報(bào)文。確認(rèn)【1】中的報(bào)文收到了。
-
server 向 client 發(fā)送 TCP 報(bào)文,請(qǐng)求關(guān)閉從 server 到 client 的單向連接。
-
client 向 server 發(fā)送 TCP 確認(rèn)報(bào)文。確認(rèn)【3】中的報(bào)文收到了。
總結(jié)
以上是生活随笔為你收集整理的WebSocket 的通信机制的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: VMware Workstation 入
- 下一篇: GitLab初次安装后,登录GitLab