是否可以通过Spring WebSocket发送同步消息?

azi*_*sal 6 java spring websocket tyrus spring-websocket

我有一个Spring应用程序,它通过Spring WebSocket异步发送消息给另一台服务器.但是对于特定情况我需要同步发送消息,我应该继续使用来自服务器的传入响应的过程.

我不想仅为此进程进行HTTP调用,因为已经有一个开放的TCP连接,我想使用它.

例如,在Tyrus WebSocket实现中,可以通过同步或异步发送消息

session.getBasicRemote().sendText(message);
session.getAsyncRemote().sendText(message);
Run Code Online (Sandbox Code Playgroud)

相关的Tyrus文档链接.

顺便说一下,我没有sub-protocol像Spring WebSocket那样使用STOMP.

Hug*_*ori 0

您可以将自定义模式添加到需要回复的消息中。

假设您要将服务器 A 的表单发送到服务器 B:

sendToB("REPLY ME!");
Run Code Online (Sandbox Code Playgroud)

在您实际发送消息之前,服务器 A 会在其中添加一个自定义短语,例如:

sendToB("REQUEST:1234" + "#$#" + "REPLY-ME!");
Run Code Online (Sandbox Code Playgroud)

当服务器B收到消息时:

String[] parts = message.split("#$#");
if (parts.length > 0) {
    String[] keyValue = parts[0].split(":");
    sendToA("RESPONSE:" + keyValue[1] + "#$#" + "CALM DOWN!");
}
Run Code Online (Sandbox Code Playgroud)

最后,服务器A收到消息:

"RESPONSE:1234#$#CALM DOWN!"
Run Code Online (Sandbox Code Playgroud)

那么同步消息就完成了。