Spring Boot 2.x整合Websocket(基于Spr
2019-04-25 本文已影响509人
Exrick
- 宣传官网 http://xb.exrick.cn
- 在线Demo http://xboot.exrick.cn
- 开源版Github地址 https://github.com/Exrick/x-boot
- 开发文档 https://www.kancloud.cn/exrick/xboot/1009234
- 获取完整版 http://xpay.exrick.cn/pay?xboot
在这里插入图片描述
Stomp是一种简单(流)文本定向消息协议,提供了一个可互操作的链接格式。允许stomp客户端与任意stomp消息代理(Broker)进行交互。STOMP协议由于设计简单,易于开发客户端,因此在多种语言和多种平台上得到广泛地应用。
- 添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
- 配置类
/**
* @author Exrickx
*/
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketStompConfig implements WebSocketMessageBrokerConfigurer {
/**
* 注册stomp端点
* @param registry
*/
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
// 允许使用socketJs方式访问 即可通过http://IP:PORT/ws来和服务端websocket连接
registry.addEndpoint("/ws").setAllowedOrigins("*").withSockJS();
}
/**
* 配置信息代理
* @param registry
*/
@Override
public void configureMessageBroker(MessageBrokerRegistry registry) {
// 订阅Broker名称 user点对点 topic广播即群发
registry.enableSimpleBroker("/user","/topic");
// 全局(客户端)使用的消息前缀
registry.setApplicationDestinationPrefixes("/app");
// 点对点使用的前缀 无需配置 默认/user
registry.setUserDestinationPrefix("/user");
}
}
- 由于只做广播和点对点的消息推送,这里只用到订阅发布
@Autowired
private SimpMessagingTemplate messagingTemplate;
// 广播
messagingTemplate.convertAndSend("/topic/subscribe", "您收到了新的系统消息");
// 通过用户ID实现点对点
messagingTemplate.convertAndSendToUser(id,"/queue/subscribe", "您收到了新的消息");