我想创建一个服务,其中Python客户端可以订阅spring-boot服务的websocket上的用户队列。网上有几种资源,但这些资源都集中在
上我找到了以下资源:
Spring-boot 2.0.2允许创建一个简单的websocket服务器。本文介绍如何发布到主题(@SendTo
注释)。 Spring Websockets
Baeldung的这篇文章介绍了如何创建用户队列的订阅(@SendToUser
注释)。 Baeldung Websockets
我发现websocket-client和websockets是最近活跃的Python模块,但手册没有解释订阅用户队列。
是否有一个如何从Python客户端连接到用户队列的示例?
示例websocket服务器
Spring配置:
@Configuration
@EnableWebSocketMessageBroker
public class ClientWebsocketConfiguration extends AbstractWebSocketMessageBrokerConfigurer
{
@Override
public void configureMessageBroker(@NotNull MessageBrokerRegistry aMessageBrokerRegistry)
{
aMessageBrokerRegistry.enableSimpleBroker("/queue", "/user");
aMessageBrokerRegistry.setApplicationDestinationPrefixes("/app");
aMessageBrokerRegistry.setUserDestinationPrefix("/user");
}
@Override
public void registerStompEndpoints(@NotNull StompEndpointRegistry aStompEndpointRegistry)
{
aStompEndpointRegistry.addEndpoint("/websocket").setAllowedOrigins("*").withSockJS();
}
}
控制器:
@Controller
public class SubscriptionController
{
@NotNull
@MessageMapping("/subscribe")
@SendToUser("/queue/reply")
public ReplyMessage processSubscribeFromClient(
@Payload Object object,
Principal principal)
{
return new ReplyMessage("Hello World");
}
}
消息:
class ReplyMessage
{
@Nullable private String content;
public ReplyMessage()
{
}
public ReplyMessage(@Nullable String content)
{
this.content = content;
}
@Nullable
public String getContent()
{
return content;
}
}