使用Spring进行STOMP Websocket同步通信

时间:2017-12-15 08:01:36

标签: java spring stomp spring-websocket

我有一个要求是需要同步处理某些STOMP websocket连接。

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

我有一个服务器(spring)定义了代理(“/ topic”)也定义了处理程序(“/ app / hello”)。

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

  1. 如何在我的服务器上返回值(STOMP规范说有关RECEIPT帧,但我不认为这是可以手动控制的)。
  2. 如何在发送后等待客户端上的值。

1 个答案:

答案 0 :(得分:1)

要将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。我没有这些框架的经验,但这些例子非常简单。