【发布时间】:2013-12-04 05:54:39
【问题描述】:
我尝试运行这个例子:
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.websocket.OnClose;
import javax.websocket.OnError;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.ServerEndpoint;
@ServerEndpoint(value = "/chat")
public class ChatServer {
private static final Logger LOGGER =
Logger.getLogger(ChatServer.class.getName());
@OnOpen
public void onOpen(Session session) {
LOGGER.log(Level.INFO, "New connection with client: {0}",
session.getId());
}
@OnMessage
public String onMessage(String message, Session session) {
LOGGER.log(Level.INFO, "New message from Client [{0}]: {1}",
new Object[] {session.getId(), message});
return "Server received [" + message + "]";
}
@OnClose
public void onClose(Session session) {
LOGGER.log(Level.INFO, "Close connection for client: {0}",
session.getId());
}
@OnError
public void onError(Throwable exception, Session session) {
LOGGER.log(Level.INFO, "Error for client: {0}", session.getId());
}
}
我使用Tomcat 7.0.47,我查看链接:ws://localhost/Tests/chat。
我需要注册这个 websocket 还是在web.xml 中添加一些东西?
知道为什么不适合我吗?
【问题讨论】:
-
服务器日志文件中有任何堆栈跟踪/产生的错误消息吗?当您尝试连接时,浏览器会产生什么? (假设您使用浏览器作为客户端..)
-
服务器日志中没有任何内容,看起来请求没有到达服务器。为了测试,我使用 Chrome 应用程序“Advanced Rest Client”。
-
你能试试别的吗? “Advanced Rest Client”不支持 WebSocket 连接(我在他们的描述中没有看到)。像websocket.org/echo.html 这样简单的东西应该可以工作。您也可以打开 JavaScript 错误控制台,通常会在哪里指示错误(404、500、其他原因..)
-
同样的结果。我收到消息:与 'ws://localhost/Tests/chat' 的 WebSocket 连接失败:意外响应代码:404。服务器端有问题。也许我需要其他课程或其他什么?
-
为什么是
ws://localhost/Tests/chat而不是ws://localhost/ChatServer/chat?