tyrus-websocket服务器编程端点



我正在尝试使用tyrus 1.8.2的编程端点创建一个websocket服务器。我发现构造函数:

public Server(String hostName,
  int port,
  String contextPath,
  Map<String,Object> properties,
  Class<?>... configuration)

不接受实现ServerEndpointConfig的类。当我尝试时,它抛出DeploymentException"Class XXX不是ServerApplicationConfig子代,也没有@ServerEndpoint注释。"

由于我使用的是编程端点(未注释),这似乎意味着我必须实现ServerApplicationConfig。这与websocket API文档相反。

因此,当我实现ServerApplicationConfig时,我不再得到这个异常,服务器似乎启动时没有问题,但它返回404到我认为有效的连接尝试(正确的主机、端口和上下文路径)

我错过了什么?

附加信息:我扩展了TyrusServerEndpointConfigurator,并为modifyHandshake()方法提供了覆盖。服务器返回404,而从未调用过此方法。

问题是Tyrus构建上下文路径的方式混乱。有一个路径传递给Server构造函数,还有一个路径由ServerEndpointConfig getPath()方法返回。这些链接起来形成完整的上下文路径。

因此,如果在server构造函数中指定"/server",在ServerEndpointConfig.getPath()中指定"/endpoint",则服务器将接受"/server/endpoint"上的连接请求。

最新更新