WebSocket部署到服務器時,出現連接失敗的問題解決與分析

前段時間在本地寫的一個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://download.csdn.net/download/kerrigeng/9979890

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章