无法建立 WebSocket 连接 - Spark Java 框架
WebSocket connection cannot be made - Spark Java Framework
我尝试在 Spark Java 框架中重新创建 WebSocket 聊天应用程序 (http://sparkjava.com/tutorials/websocket-chat),但偶然发现了一个问题。
前端应用无法通过 WebSocket 连接到服务器。我查看了浏览器中的 "Network" 选项卡,有一个对服务器的正确 WebSocket 调用,但它以 500 代码 响应。服务器端没有日志,即使我已将 System.out.println 添加到 @OnWebSocketConnect 和 @OnWebSocketClose 函数。这是为什么?
每次启动应用程序时,我都会收到一条警告:
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.... for further details.
我认为这不是问题所在,但可能值得一提。
我也在主 class 中添加了一个异常捕获器,但它没有启动:
exception(Exception.class, (e, req, res) -> {
System.err.println("Exception happened");
e.printStackTrace();
});
我设法解决了这个问题。问题很简单:我的 ChatWebSocketHandler 有不正确的 @OnWebSocketClosed 实现
public void onDisconnect(Session user)
而不是
public void onDisconnect(Session user, int statusCode, String reason).
当然,抛出了正确的异常,但我的 SLF4J 无效配置使其安静(NOP)。
我已经解决了这个问题,了解到我需要在下面添加依赖项
compile "org.slf4j:slf4j-api:1.7.13"
compile "org.slf4j:slf4j-simple:1.7.21"
到我的 gradle 文件以使 SLF4J 正常工作。
我尝试在 Spark Java 框架中重新创建 WebSocket 聊天应用程序 (http://sparkjava.com/tutorials/websocket-chat),但偶然发现了一个问题。
前端应用无法通过 WebSocket 连接到服务器。我查看了浏览器中的 "Network" 选项卡,有一个对服务器的正确 WebSocket 调用,但它以 500 代码 响应。服务器端没有日志,即使我已将 System.out.println 添加到 @OnWebSocketConnect 和 @OnWebSocketClose 函数。这是为什么?
每次启动应用程序时,我都会收到一条警告:
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.... for further details.
我认为这不是问题所在,但可能值得一提。
我也在主 class 中添加了一个异常捕获器,但它没有启动:
exception(Exception.class, (e, req, res) -> {
System.err.println("Exception happened");
e.printStackTrace();
});
我设法解决了这个问题。问题很简单:我的 ChatWebSocketHandler 有不正确的 @OnWebSocketClosed 实现
public void onDisconnect(Session user)
而不是
public void onDisconnect(Session user, int statusCode, String reason).
当然,抛出了正确的异常,但我的 SLF4J 无效配置使其安静(NOP)。
我已经解决了这个问题,了解到我需要在下面添加依赖项
compile "org.slf4j:slf4j-api:1.7.13"
compile "org.slf4j:slf4j-simple:1.7.21"
到我的 gradle 文件以使 SLF4J 正常工作。