教育行業(yè)A股IPO第一股(股票代碼 003032)

全國咨詢/投訴熱線:400-618-4000

WebSocket協(xié)議怎么用?和HTTP協(xié)議的區(qū)別在哪?

更新時間:2023年07月06日11時37分 來源:傳智教育 瀏覽次數(shù):

好口碑IT培訓(xùn)

WebSocket 是基于 TCP 的一種新的網(wǎng)絡(luò)協(xié)議。它實現(xiàn)了瀏覽器與服務(wù)器全雙工通信——瀏覽器和服務(wù)器只需要完成一次握手,兩者之間就可以創(chuàng)建持久性的連接, 并進(jìn)行雙向數(shù)據(jù)傳輸。

HTTP協(xié)議和WebSocket協(xié)議對比:

HTTP是短連接,WebSocket是長連接。

HTTP通信是單向的,基于請求響應(yīng)模式。WebSocket支持雙向通信。

HTTP和WebSocket底層都是TCP連接。

那既然WebSocket支持雙向通信,功能看似比HTTP強(qiáng)大,那么我們是不是可以基于WebSocket開發(fā)所有的業(yè)務(wù)功能?

不能,WebSocket并不能完全取代HTTP,WebSocket服務(wù)器長期維護(hù)長連接需要一定的成本,各個瀏覽器支持程度不一。WebSocket 是長連接,受網(wǎng)絡(luò)限制比較大,需要處理好重連,它只適合在特定的場景下使用。

下面以外賣平臺商家端的來單提醒為例,演示W(wǎng)ebSocket的使用。

需求分析和設(shè)計

用戶下單并且支付成功后,需要第一時間通知外賣商家。通知的形式有語音播報和彈出提示框兩種。

1688613589650_來單提醒.png

通過WebSocket實現(xiàn)管理端頁面和服務(wù)端保持長連接狀態(tài),當(dāng)客戶支付后,調(diào)用WebSocket的相關(guān)API實現(xiàn)服務(wù)端向客戶端推送消息??蛻舳藶g覽器解析服務(wù)端推送的消息,判斷是來單提醒還是客戶催單,進(jìn)行相應(yīng)的消息提示和語音播報。

約定服務(wù)端發(fā)送給客戶端瀏覽器的數(shù)據(jù)格式為JSON,字段包括:type,orderId,content

- type 為消息類型,1為來單提醒 2為客戶催單。

- orderId 為訂單id。

- content 為消息內(nèi)容。

在OrderServiceImpl中注入WebSocketServer對象,修改paySuccess方法,加入如下代碼:

Map map = new HashMap();
map.put("type", 1);//通知類型 1來單提醒 2客戶催單
map.put("orderId", orders.getId());//訂單idmap.put("content","訂單號:" + outTradeNo);
webSocketServer.sendToAllClient(JSON.toJSONString(map));

添加代碼后查看瀏覽器調(diào)試工具數(shù)據(jù)交互過程,和前后端聯(lián)調(diào)情況,顯示正常則表示添加成功。

0 分享到:
和我們在線交談!