【发布时间】:2014-07-16 11:20:52
【问题描述】:
我正在尝试在我的网站上实现 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); }
}
还有这个 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...");
};
我将 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 兼容(我检查过)
类似的主题对我没有帮助,所以我想请你就如何解决问题提出建议
【问题讨论】:
-
Mysite来自哪里? WAR 文件是否以该名称部署?服务器是否有任何其他路径元素用于 WS 端点? -
@Tichodroma
Mysite是我在tomcat中的项目名称,我不确定你在第二个问题中的意思。
标签: tomcat jakarta-ee websocket