WebSocket 原理以及入門

總結(jié)了一下知乎高票答案https://www.zhihu.com/question/20215561

websocket是html5協(xié)議,作為http協(xié)議的補(bǔ)充

HTTP的生命周期通過(guò)Request來(lái)界定,也就是一個(gè)Request 一個(gè)Response,那么在HTTP1.0中,這次HTTP請(qǐng)求就結(jié)束了。在HTTP1.1中進(jìn)行了改進(jìn),使得有一個(gè)keep-alive,也就是說(shuō),在一個(gè)HTTP連接中,可以發(fā)送多個(gè)Request,接收多個(gè)Response。但是請(qǐng)記住 Request = Response , 在HTTP中永遠(yuǎn)是這樣,也就是說(shuō)一個(gè)request只能有一個(gè)response。而且這個(gè)response也是被動(dòng)的,不能主動(dòng)發(fā)起。

但是http協(xié)議是非持續(xù)性的

服務(wù)器很懶,它不會(huì)主動(dòng)法res給前端,只有前端不停的問(wèn)他
可以作為長(zhǎng)連接的方式有l(wèi)ong poll,還有ajax輪詢
ajax輪詢:很簡(jiǎn)單就是不停的發(fā)起請(qǐng)求嘛
前端:有嗎?
后臺(tái):沒(méi)有
前端:有嗎?
后臺(tái):哎喲沒(méi)有啦
long poll:是采取阻塞機(jī)制,打電話,后臺(tái)不接我就不掛

這兩種方式的缺點(diǎn)很明顯。ajax輪詢需要服務(wù)器有很快的處理速度和資源。long poll需要有很高的并發(fā),也就是說(shuō)同時(shí)接待客戶的能力。

然而websocket卻可以實(shí)現(xiàn),建立好連接以后,能讓服務(wù)器主動(dòng)發(fā)消息給前端啦哈哈哈
客戶端:啦啦啦,我要建立Websocket協(xié)議,需要的服務(wù):chat,Websocket協(xié)議版本:17(HTTP Request)
服務(wù)端:ok,確認(rèn),已升級(jí)為Websocket協(xié)議(HTTP Protocols Switched)
客戶端:麻煩你有信息的時(shí)候推送給我噢。。服務(wù)端:ok,有的時(shí)候會(huì)告訴你的。
服務(wù)端:balabalabalabala
服務(wù)端:balabalabalabala
只需要經(jīng)過(guò)一次HTTP請(qǐng)求,就可以做到源源不斷的信息傳送了

還有一點(diǎn)websocket可以建立久連接,久連接,久連接。解決資源問(wèn)題,有信息的時(shí)候客服想辦法通知前端,然后前端在統(tǒng)一轉(zhuǎn)交給后臺(tái)。

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

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

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