前言:
现时同学们对“java stomp客户端”大致比较关注,大家都需要学习一些“java stomp客户端”的相关资讯。那么小编在网络上汇集了一些关于“java stomp客户端””的相关资讯,希望各位老铁们能喜欢,大家一起来学习一下吧!背景
项目一开始设计的是前端页面刷新以get方式获取数据,后来要求设备数据实时推送给前端,这样就需要和前端建立一个通道。然后我查看了一些资料,传统的websocket只是一个通道,发送的数据对方并不认识,所以我选择了websocket一个子协议stomp。它类似于kafka有多个主题,后端向某一个主题发送数据,只有订阅了该主题的客户端才会收到推送到这个主题的数据。
stomp
STOMP即Simple (or Streaming) Text Orientated Messaging Protocol,简单(流)文本定向消息协议,它提供了一个可互操作的连接格式,允许STOMP客户端与任意STOMP消息代理(Broker)进行交互。STOMP协议由于设计简单,易于开发客户端,因此在多种语言和多种平台上得到广泛地应用。
下面是实现代码
pom.xml
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId></dependency>
@Configuration@EnableWebSocketMessageBrokerpublic class WebSocketConfiguration implements WebSocketMessageBrokerConfigurer { /** * 服务端两次心跳时间间隔的最小毫秒数 */ @Value("${websocket.heartbeat.heartbeat-interval-server}") private long heartbeatIntervalServer; /** * 服务端接收客户端两次心跳的时间间隔 */ @Value("${websocket.heartbeat.heartbeat-interval-client}") private long heartbeatIntervalClient; @Override public void configureMessageBroker(MessageBrokerRegistry config) { long[] heartbeat = {heartbeatIntervalServer, heartbeatIntervalClient}; ThreadPoolTaskScheduler te = new ThreadPoolTaskScheduler(); te.setPoolSize(1); te.setThreadNamePrefix("wss-heartbeat-thread-"); te.initialize(); config.enableSimpleBroker("/api/v1/ws/devices") .setHeartbeatValue(heartbeat) .setTaskScheduler(te); config.setApplicationDestinationPrefixes("/ws"); } @Override public void registerStompEndpoints(StompEndpointRegistry registry) { registry.addEndpoint("/api/v1/ws").setAllowedOrigins("*"); }}
@Autowiredprivate SimpMessageSendingOperations simpMessageSendingOperations;simpMessageSendingOperations.convertAndSend("topic", payload); // 推送数据}
标签: #java stomp客户端