項(xiàng)目安裝完成后,如果出現(xiàn) WebSocket 無(wú)法連接的問題,可以按以下步驟逐一排查:
1、檢查服務(wù)端進(jìn)程是否開啟 WebSocket 支持
首先在服務(wù)器上使用 curl 測(cè)試服務(wù)端是否已正確開啟 WebSocket:
curl --http1.1 -i \
-H "Upgrade: websocket" \
-H "Connection: Upgrade" \
-H "Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw==" \
-H "Sec-WebSocket-Version: 13" \
http://localhost:20200/ws
- 請(qǐng)將 20200 端口替換為進(jìn)程實(shí)際運(yùn)行的端口號(hào)
- 如果是在 Docker 中運(yùn)行,請(qǐng)?zhí)顚懰拗鳈C(jī)映射的端口(默認(rèn) 20300)
正常響應(yīng)示例:
- 如果 http code 是 101 Switching Protocols,則說明進(jìn)程已正常開啟了 WebSocket ,跳轉(zhuǎn)到第三步繼續(xù)排查。
- 如果 http code 是 200 或者其他非 101 響應(yīng),請(qǐng)繼續(xù)進(jìn)行下一步。
2、啟用 WebSocket 功能
檢查項(xiàng)目根目錄下 .env 文件中是否啟用了 LARAVELS_WEBSOCKET_ENABLE
LARAVELS_WEBSOCKET_ENABLE=true
如果未啟用,則修改為 true 并重啟進(jìn)程。
重啟進(jìn)程后,重新執(zhí)行第一步來驗(yàn)證是否已啟用 WebSocket 功能。
3、檢查反向代理配置
對(duì)照 https://doc.crmeb.com/tuoluojiang/tuoluojiang20/21245 中的反向代理配置文件內(nèi)容,檢查反向代理配置文件內(nèi)容是否一致。
注意 proxy_pass 的目標(biāo)地址應(yīng)該指向進(jìn)程實(shí)際監(jiān)聽的端口。
4、其他問題
- 前端是否可以正常訪問項(xiàng)目(排除域名和網(wǎng)絡(luò)問題)
- WebSocket 協(xié)議是否和頁(yè)面協(xié)議一致
- 如果網(wǎng)頁(yè)是 http:// ,WebSocket 應(yīng)該使用 ws://
- 如果網(wǎng)頁(yè)是 https:// ,WebSocket 應(yīng)該使用 wss://
- 可以在瀏覽器 DevTools 的 Network 中檢查 WebSocket 請(qǐng)求。