基于STOMP的WebSocket学习——springboot实现

一、配置类解析

@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {
    
    

    @Override
    public void registerStompEndpoints(StompEndpointRegistry registry) {
    
    
        registry.addEndpoint("/ws").setAllowedOrigins("*").withSockJS();
    }

    @Override
    public void configureMessageBroker(MessageBrokerRegistry registry) {
    
    
        registry.setApplicationDestinationPrefixes("/app");
        registry.enableSimpleBroker("/topic");
        registry.setUserDestinationPrefix("/user");
    }
}

其中

  registry.addEndpoint("/ws").setAllowedOrigins("*").withSockJS();  

这一句的意思
允许使用socketJs方式访问,访问点为webSocketServer,允许跨域
在网页上我们就可以通过这个链接
http://localhost:8080/ws
来和服务器的WebSocket连接

  @Override
    public void configureMessageBroker(MessageBrokerRegistry registry) {
    
    
        registry.setApplicationDestinationPrefixes("/app");
        registry.enableSimpleBroker("/topic");
        registry.setUserDestinationPrefix("/user");
    }

registry.setApplicationDestinationPrefixes("/app");
指服务端接收地址的前缀,意思就是说客户端给服务端发消息的地址的前缀

registry.enableSimpleBroker("/topic");
用户订阅主题的前缀
/topic 代表发布广播,即群发
/queue 代表点对点,即发指定用

这些可以自定义的

registry.setUserDestinationPrefix("/user");

二、一些方法上的注解

2.1 @MessageMapping(“/sendTest”)

接收客户端发送的消息,当客户端发送消息的目的地为/app/sendTest时,交给该注解所在的方法处理消息,其中/app是在

registry.setApplicationDestinationPrefixes("/app");

2.2@SubscribeMapping(“/subscribeTest”)

接受客户端订阅的处理,这个可以放controller中的具体一个方法中,然后在这个方法中可以做一些记录,如想记录历史订阅信息等…
当客户端订阅的目的地为/app/subscribeTest时,交给该注解所在的方法处理订阅,其中/app为客户端请求前缀
若没有添加@SendTo注解且该方法有返回值,则返回的目的地地址为**/app/sendTest**,不经过消息代理,客户端需要订阅了这个主题才能收到返回消息

2.3@SendTo(“/topic/subscribeTest”)

一般来说,假如不加SendTo就会默认原路返回,比如有一个

@MessageMapping("/sendTest") 返回的信息就是/app/sendTest
若没有添加@SendTo注解且该方法有返回值,则返回的目的地地址为/topic/sendTest,经过消息代理,客户端需要订阅了这个主题才能收到返回消息
而SendTo就会直接修改返回地址,使得其经过消息代理,客户端需要订阅了这个主题才能收到返回消息。

网上有一张图总结得很到位,来自https://blog.csdn.net/qq_28988969/article/details/78113463
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_43263481/article/details/108336215
今日推荐