Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java tyrus Websocket API的怪异行为_Java_Json_Tyrus - Fatal编程技术网

Java tyrus Websocket API的怪异行为

Java tyrus Websocket API的怪异行为,java,json,tyrus,Java,Json,Tyrus,我正在开发一个websocket服务器和客户端,它将处理多条消息 我将JSON与解码器和编码器一起使用 因为每个端点只能有一个@OnMessage方法,所以我创建了一个名为message的标记接口。现在,我将@OnMessage方法作为参数,如void@onMessageMessageMessage消息、客户端和服务器中的会话 我正在使用Session.getAsyncRemote.sendObject从客户端的@OnConnect发送寄存器\发送对象。服务器成功读取此消息,并使用Session

我正在开发一个websocket服务器和客户端,它将处理多条消息

我将JSON与解码器和编码器一起使用

因为每个端点只能有一个@OnMessage方法,所以我创建了一个名为message的标记接口。现在,我将@OnMessage方法作为参数,如void@onMessageMessageMessage消息、客户端和服务器中的会话

我正在使用Session.getAsyncRemote.sendObject从客户端的@OnConnect发送寄存器\发送对象。服务器成功读取此消息,并使用Session.getAsyncRemote.sendObject将Register_接收到的对象发送给客户端。 Register\u Send和Register\u Received都实现了消息接口。这两个对象都作为JSON对象进行编码和解码

但在客户端void@OnMessageMessage消息中,会话方法接收Register\u Received对象作为Register\u Send。因此,引发异常

我无法解决此问题,无论是我的代码中的错误还是Tyrus 1.7 API中的错误


请为我推荐解决此问题的方案。

您能分享您的代码吗?代码演示了您的问题?亲爱的@PavelBuckek,您可以在这里找到git存储库:请仔细阅读代码。将EclipseIDE与JDK7和Tyrus1.7API一起使用。等待您的响应。问题是,在willDecode方法实现中,您的解码器都返回true。因此,它们总是在声明顺序中使用,这有利于客户端的Register\u Send\u Decoder.class。您需要从@ClientEndpoint注解实现willDecode better或远程不需要的解码器。任何支持Register\u Send\u Decoder.class的原因?顺便说一句,问题已经解决。将在此处更新详细答案。我正在开发基于控制台的ClientEndpoint。现在我向服务器发送两种不同类型的消息。第一条消息通过OnOpen方法发送,第二条消息通过使用session.getAsyncRemote.sendObject发送,session.getAsyncRemote.sendObject位于客户端的主方法内。消息由服务器发送和响应。但客户端中的OnMessage方法并没有读取对第二条消息的响应。做了很多研究,但无法找到解决方案。给我建议一些解决办法。