WebSocket 404错误

Ale*_*rin 2 tomcat java-ee websocket

我正在尝试在我的网站上实现WebSocket.以下基本教程我添加了这个类:

@ServerEndpoint(value="/websocketendpoint")
public class WebSocket {
    private static Set<Session> peers = Collections.synchronizedSet(new HashSet<Session>());

    @OnMessage
    public String onMessage(String message){ return null; }

    @OnOpen
    public void onOpen(Session peer){ peers.add(peer); }

    @OnClose
    public void onClose(Session peer){ peers.remove(peer); }
}
Run Code Online (Sandbox Code Playgroud)

这个JS:

var wsUri = "ws://" + document.location.host + document.location.pathname + "websocketendpoint";
var ws = new WebSocket(wsUri);
ws.onopen = function(){
    ws.send("Message to send");
    alert("Message is sent...");
};
ws.onmessage = function (evt){   
    var received_msg = evt.data;
    alert("Message is received...");
};
ws.onclose = function(){ 
    alert("Connection is closed...");
};
Run Code Online (Sandbox Code Playgroud)

我将js添加到我的一个页面中,并且仅ws.onclose在控制台中调用,我收到此错误:

Firefox:Firefox无法在ws:// localhost:8080/Mysite/websocketendpoint建立与服务器的连接

Chrome:WebSocket握手期间出错:意外的响应代码:404

我尝试使用'ws://echo.websocket.org' wsUri并且它可以工作,所以我猜问题是在服务器端.

我正在使用以下库:javaee-api-7.0,javax.websocket-api-1.0 我的浏览器与websockets兼容(我检查过)

类似的主题对我没有帮助,所以我要求你提供有关如何解决问题的建议

Bog*_*dan 8

您可能想要检查这是否是您的错误的根:tomcat 7.0.50 java webscoket实现提供404错误

从版本7.0.47开始,Tomcat有一个JSR-356(即websocket API)实现.它还提供了javax.websocket-api-1.0.jar库,因此您的应用程序不需要它.您可能在编译时需要它,但服务器将在运行时提供它(provided如果您不熟悉该工具,这就是maven 中的范围意味着什么)

确保javax.websocket-api-1.0.jar不会被部署在你的战争,做你的Eclipse服务器视图中点击右键,Clean...接着Clean Tomcat work directory...再一个Publish,然后再试一次.