我有一些STOMP Websocket连接需要同步处理的要求。

意思是我有一个客户(春季)订阅了一个主题(“ / topic”)。

我有一台服务器(春季),该服务器已定义了代理(“ / topic”),还定义了处理程序(“ / app / hello”)。

现在,客户端可以将请求发送到/ app / hello,然后等待响应,然后再将下一个请求发送到/ app / hello。


我该如何在服务器上返回值(STOMP规范说明了RECEIPT帧,但是我认为这不能手动控制)。
发送后如何等待客户端上的值。

最佳答案

要将Java客户端连接到websocket端点,可以使用tyrus reference implementationJSR356 - Websockets For Java

基本上,您将需要实现客户端终结点(javax.websocket.Endpoint)和消息处理程序(javax.websocket.MessageHandler)。在端点中,您可以在打开的当前会话中注册消息处理程序:

public class ClientEndpoint extends Endpoint {
  ...

  @Override
  public void onOpen(final Session aSession, final EndpointConfig aConfig) {
    aSession.addMessageHandler(yourMessageHandler);
  }
}


要连接到服务器端点,可以使用ClientManager

final ClientManager clientManager = ClientManager.createClient();
clientManager.connectToServer(clientEndpoint, config, uriToServerEndpoint);


如果服务器端点向主题发送消息,则将调用消息处理程序的onMessage方法。

根据您的需要,您可以选择实现上述接口,也可以使用相应的注释。

更新:
STOMP website列出了STOMP协议的几种实现。对于Java,有GozirraStampy。我没有这些框架的经验,但是示例非常简单。

08-04 15:32