前言
前段時間在本地寫的一個WebSocket程序部署到服務器上時出錯,通過一段時間的研究,終于解決了,所以本文就來給大家分析下并給出解決的方法,下面話不多說了,來一起看看詳細的介紹吧。
本地環境是:JDK1.8(32位) Tomcat8.0
服務器環境是:JDK1.8(64位) Tomcat8.0
本地運行是正常的。
在服務器部署運行時可以打開頁面,并執行WebSocket連接失敗并關閉的代碼。如圖:

問題解決:
1.在Tomcat8部署的項目不要導入catalina.jar和websocket-api.jar這兩個包,因為Tomcat8自帶有這兩個包。自己再導入的話會沖突。
2.
websocket = new WebSocket("ws://192.168.10.119:8080/RMExpertView/test");
IP要寫服務器的Ip地址,不要寫localhost.
3.調試遠程服務器的webSocket程序時,要關閉本地的Tomcat服務器。
問題分析
1.WebSocket的Ip應該指向服務器IP。最終Jsp的代碼會在本地瀏覽器執行,與之連接的IP應該是服務器IP而不該指向本地。
2.包沖突的問題。尤其是Tomcat7升級到Tomcat8的項目尤其要注意。
3.由于WebSocket是長連接,如果本地的服務先跑起來,而后服務器的WebSocket再跑起來,因為webSocket地址中的標識字段相同,所以即使服務器掛掉,即使使用服務器的ip去訪問依然可以成功,因為訪問的其實是本地的Tomcat服務器。
Demo下載
鑒于跟我尋求Demo的人太多,附上下載鏈接:http://xiazai.jb51.net/201710/yuanma/WebSocketDemo(jb51.net).rar
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
您可能感興趣的文章:- WebSocket部署服務器但外網無法連接的解決方法