首页 > 解决方案 > 无法在 windows 命令上使用 wscat 订阅目的地

问题描述

我开始构建 websocket 应用程序。我正在为 websocket 后端使用一个 Spring Boot 应用程序,需要帮助了解哪个是使用 wscat 订阅特定目的地的正确命令,我正在使用 @SendToUser,目前它能够在 CustomHandshakeHandler 中注册用户

public class CustomHandshakeHandler extends DefaultHandshakeHandler {
        @Override
        protected Principal determineUser(ServerHttpRequest request,
                                          WebSocketHandler wsHandler,
                                          Map<String, Object> attributes) {
            
                LOGGER.info(request.getBody().toString());
            
}}

用命令

wscat -c ws://localhost:8080/ws

但是我需要调用下面的处理程序,我不确定是使用 wscat 调用的正确方法

@MessageMapping("/ws")
    @SendToUser("/ws")
    public String recieveStartRequest(@Payload String message, Principal principal) {
        LOGGER.info("Received greeting message {} from {}", message, principal.getName());
        return "Hello world !";
    }

在调试中我可以发现

clientInboundChannel added UserDestinationMessageHandler[DefaultUserDestinationResolver[prefix=/user/]]
brokerChannel added UserDestinationMessageHandler[DefaultUserDestinationResolver[prefix=/user/]]

但是当我需要调用上述消息处理程序时,我可以将@Payload String 消息用于特定数据

标签: websocketspring-websocket

解决方案


推荐阅读