基于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
在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值