搜了很多答案,大致有以下几种解决办法,如果有类似错误,大家可以按下面几类错误对照检查一下:

1、

@ServerEndpoint("/webSocket/message/{xxx}/{xxxx}")

路径前面没有“/”,会导致这个错误,注意检查。

2、

 @OnOpen
    public void onOpen(Session session, @PathParam("xxx") String xxx, @PathParam("xxxx") Integer xxxx) 

获取路径中的参数时要使用@PathParam,若使用了其他的会报错。

3、

@Component

去掉类名上的@Component注解可解决报错,亲测确实没有报错了,但是在本地也无法建立连接了,只能打包时侯将该注解去掉,只能说这样做有用,但是不太方便。

4、AOP的问题,没太理解具体要怎么处理,不再详细阐述了。

5、这个是我自己项目的解决办法,试了以上几个办法都不太有效的时候,我又去详细观察了报错信息,还真的让我发现了一段有价值的报错信息,如下:

Caused by: javax.websocket.DeploymentException: No Throwable parameter was present on the method [onError] of class [com.dxhy.bxsdk.business.websocketService.MessageWebsocket] that was annotated with OnError

大致意思就是说

原因:javax.websocket.DeploymentException:使用 OnError 注释的类 [com.dxhy.bxsdk.business.websocketService.MessageWebsocket] 的方法 [onError] 上没有 Throwable 参数

根据这段报错信息,我去检查了onError方法,果然没有Throwable参数,加上之后就好了,加完后的代码如下:

  @OnError
    public void onError(Session session, Throwable error) {
        log.info("连接错误!原因:{}", error.getMessage());
    }

至此,问题解决。

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐