前言
前段時間在本地寫的一個WebSocket程序部署到服務(wù)器上時出錯,通過一段時間的研究,終于解決了,所以本文就來給大家分析下并給出解決的方法,下面話不多說了,來一起看看詳細的介紹吧。
本地環(huán)境是:JDK1.8(32位) Tomcat8.0
服務(wù)器環(huán)境是:JDK1.8(64位) Tomcat8.0
本地運行是正常的。
在服務(wù)器部署運行時可以打開頁面,并執(zhí)行WebSocket連接失敗并關(guān)閉的代碼。如圖:
問題解決:
1.在Tomcat8部署的項目不要導(dǎo)入catalina.jar和websocket-api.jar這兩個包,因為Tomcat8自帶有這兩個包。自己再導(dǎo)入的話會沖突。
2.
websocket = new WebSocket("ws://192.168.10.119:8080/RMExpertView/test");
IP要寫服務(wù)器的Ip地址,不要寫localhost.
3.調(diào)試遠程服務(wù)器的webSocket程序時,要關(guān)閉本地的Tomcat服務(wù)器。
問題分析
1.WebSocket的Ip應(yīng)該指向服務(wù)器IP。最終Jsp的代碼會在本地瀏覽器執(zhí)行,與之連接的IP應(yīng)該是服務(wù)器IP而不該指向本地。
2.包沖突的問題。尤其是Tomcat7升級到Tomcat8的項目尤其要注意。
3.由于WebSocket是長連接,如果本地的服務(wù)先跑起來,而后服務(wù)器的WebSocket再跑起來,因為webSocket地址中的標(biāo)識字段相同,所以即使服務(wù)器掛掉,即使使用服務(wù)器的ip去訪問依然可以成功,因為訪問的其實是本地的Tomcat服務(wù)器。
Demo下載
鑒于跟我尋求Demo的人太多,附上下載鏈接:http://xiazai.jb51.net/201710/yuanma/WebSocketDemo(jb51.net).rar
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
您可能感興趣的文章:- WebSocket部署服務(wù)器但外網(wǎng)無法連接的解決方法