无法建立WebSocket连接--Spark Java Framework

时间:2018-03-12 12:08:05

标签: java websocket jetty slf4j spark-java

我试图在Spark Java框架中重新创建WebSocket聊天应用程序(http://sparkjava.com/tutorials/websocket-chat)并偶然发现问题。

前端应用无法通过WebSocket连接到服务器。我查看了浏览器中的“网络”选项卡,并且对服务器进行了正确的WebSocket调用,但它以 500代码进行响应。即使我已将 System.out.println 添加到 @OnWebSocketConnect @OnWebSocketClose 函数中,服务器端也没有日志。那是为什么?

在每次推出应用时,我都会收到警告:

  

SLF4J:无法加载“org.slf4j.impl.StaticLoggerBinder”类。
  SLF4J:默认为无操作(NOP)记录器实现
  SLF4J:有关详细信息,请参阅http://www.slf4j.org/codes ....。

我认为这不是问题,但值得一提。

我也在主类中添加了异常捕获器,但它没有启动:

exception(Exception.class, (e, req, res) -> {
    System.err.println("Exception happened");
    e.printStackTrace();
});

1 个答案:

答案 0 :(得分:2)

我成功解决了这个问题。问题很简单:我的 ChatWebSocketHandler 错误地实现了 @OnWebSocketClosed

public void onDisconnect(Session user) 

而不是

public void onDisconnect(Session user, int statusCode, String reason).

当然,抛出了正确的Exception,但是SLF4J的无效配置让它变得安静(NOP)。

我已经解决了这个问题,并了解到我需要在

下添加依赖项
compile "org.slf4j:slf4j-api:1.7.13"
compile "org.slf4j:slf4j-simple:1.7.21"

到我的gradle文件,以使SLF4J正常工作。