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

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

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

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

好口碑IT培訓

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

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

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

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

HTTP和WebSocket底層都是TCP連接。

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

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

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

需求分析和設計

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

1688613589650_來單提醒.png

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

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

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

- orderId 為訂單id。

- content 為消息內容。

在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));

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

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