龙空技术网

Websocket子协议stomp使用

五颜六色的黑 266

前言:

现时同学们对“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客户端