java websocket修改为同步_服务端向客户端推送消息技术之websocket的介绍
websocket的介紹
在講解WebSocket前,我們先來(lái)看看下面這種場(chǎng)景,在HTTP協(xié)議下,怎么實(shí)現(xiàn)。
需求:
在網(wǎng)站中,要實(shí)現(xiàn)簡(jiǎn)單的聊天,這種情況怎么實(shí)現(xiàn)呢?如下圖:
?
當(dāng)發(fā)送私信的時(shí)候,如果要求實(shí)時(shí)同步的話,可以先讓消息入庫(kù),等對(duì)方登陸之后,查詢(xún)顯示即可。如下圖:
?
可是現(xiàn)在,需要實(shí)時(shí)消息,怎么辦?
最簡(jiǎn)單的一種方式,就是寫(xiě)個(gè)定時(shí)任務(wù),輪詢(xún)查詢(xún)?nèi)ァH缦聢D:
?
雖然這樣可以實(shí)現(xiàn),我們可以看到,每隔一定時(shí)間,就會(huì)去調(diào)用服務(wù)器接口,查詢(xún)一次。這樣很浪費(fèi)系統(tǒng)資源的。我們來(lái)看看HTTP協(xié)議:
?
如上圖:
客戶(hù)端和服務(wù)器建立連接后,發(fā)送請(qǐng)求數(shù)據(jù)給服務(wù)器;
服務(wù)器接收請(qǐng)求后,處理完成并更加請(qǐng)求返回響應(yīng)的呼作為回應(yīng);
客戶(hù)端得到數(shù)據(jù)后,與服務(wù)器斷開(kāi)連接。
這就是HTTP三次握手。是基于TCP/IP的
從上圖中,我們可以看到,http協(xié)議是典型的拉取方式,短鏈接的;是客戶(hù)端向服務(wù)器拉取數(shù)據(jù)的。如果,客戶(hù)端不發(fā)送請(qǐng)求,那么服務(wù)器的數(shù)據(jù)就不會(huì)主動(dòng)給客戶(hù)的的。
我們的需求是要實(shí)現(xiàn)即時(shí)聊天的。因?yàn)橐磿r(shí),所以,不能考客戶(hù)端拉取數(shù)據(jù),就需要使用服務(wù)器主動(dòng)給客戶(hù)端推送數(shù)據(jù)的。就需要客戶(hù)端和服務(wù)器實(shí)時(shí)保持著聯(lián)系,也就是長(zhǎng)連接。這種情況下,我們應(yīng)該使用哪種技術(shù)來(lái)實(shí)現(xiàn)呢?實(shí)現(xiàn)方式有很多種,這里我們就用websocket來(lái)實(shí)現(xiàn)。
總結(jié)
以上是生活随笔為你收集整理的java websocket修改为同步_服务端向客户端推送消息技术之websocket的介绍的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: tensorflow2 unet加载自己
- 下一篇: .net runtime占用cpu_.n