客戶端連接WebSocket伺服器時連接失敗會出現的一些問題
前段時間自己在本地寫的一個WebSocket程序部署到伺服器出現了幾個錯誤,我自己也做了記錄和分析,最後總結出來給大家看一下,希望能幫助大家規避掉這些問題。同時給現在正在做WebSocket和正準備想做WebSocket的程序猿多指出一條較為效率的路。
Q1 客戶端鏈接WebSocket伺服器時連接失敗,報404錯誤。
排查了地址錯誤和配置相關後,是因為JAR衝突,因為Tomcat7及以上,在Tomcat根目錄的lib里已經有了websocket-api.jar,部署項目的時候如果項目的wen-inf的lib下也有websocket-api-jar會衝突,導致連接不上。
Q2 本地運行正常,連接到伺服器上時出錯
本地環境:JDK1.8(32位)Tomcat8.0
伺服器環境:JDK1.8(64位)Tomcat8.0
本地運行是正常的,在伺服器部署運行時可以打開頁面,並執行WebSocket連接失敗並關閉的代碼。
在Tomcat8部署的項目不要導入catalina.jar和WebSocket-api.jar這兩個包,因為Tomcat8自帶有這兩個包。自己再導入的話會有衝突,還有就是IP寫伺服器的IP地址,不要寫localhost,在調試遠程伺服器的Websocket程序時,要關閉本地的Tomcat伺服器。
Q3 客戶端鏈接WebSocket伺服器成功後,測試消息推送獲取session失敗。(java WebSocket)
這時一定要注意,客戶端連接伺服器時的地址如果使用了localhost:8080/,那麼瀏覽器也一定要使用localhost:8080/,不然兩個請求不是同一個session,所以會獲取不到。
Q4 WebSocket鏈接伺服器報302錯誤
鏈接重定向,可以檢查一下是不是後台訪問機制的問題,還有可以看一下是不是URL路徑不對。
這是我寫的WebSocket程序部署到伺服器出現的幾個錯誤以及解決方法,如果我下次還會用到WebSocket這塊我可能會選擇第三方的……不想在這塊花太多時間。
現在免費的第三方WebSocket服務有很多,我就不一一列舉了,拿個比較簡單容易上手的GoEasy,調用了一個Rest API就OK了。如果你不是專業做伺服器的,我建議可以使用這種第三方的,比較節省時間。
GoEasy地址:www.goeasy.io
希望這次的解答對你們有所幫助。
推薦閱讀:
※Nodejs視頻伺服器 切片ffmpeg
※Windows Server 2008 架設 Web 伺服器教程(圖文詳解)
※NetApp FAS2240-4存儲刪除文件數據恢復
※11-30關於龍隱論壇伺服器換機房的奇門局