利用WebSocket定时推送数据给前端

第一步:引入Jar包,以Maven项目为例

<!-- WebSocket -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-websocket</artifactId>
</dependency>

第二步:写定时方法代码

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.messaging.simp.SimpMessagingTemplate;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

@Component
@EnableScheduling
public class Scheduler {

	@Autowired
	SimpMessagingTemplate template;
	
	@Scheduled(cron="0/20 * * * * ?")
	public void execute(){
		template.convertAndSend("/topic/getResponse", result);
	}
	
}

第三步:配置WebSocket,进行点对点连接

@Configuration
@EnableWebSocketMessageBroker
//第一个继续AbstractWebSocketMessageBrokerConfigurer中如遇到该类已过时请换成下行代码
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer{

//第二个实现WebSocketMessageBrokerConfigurer
//public class WebSocketConfig implements WebSocketMessageBrokerConfigurer{

	@Override
    public void configureMessageBroker(MessageBrokerRegistry registry) {
        registry.enableSimpleBroker("/topic","/user");
    }
	
	@Override
	public void registerStompEndpoints(StompEndpointRegistry registry) {
        //该webServer 是对应前端JS连接
        registry.addEndpoint("/webServer").withSockJS();
	}

}

第四步:前端页面JavaScript代码

$(function() {
	connect();
});

function connect() {

    //此处要特别注意一下,
    //如你的Spring Boot 项目设置了项目名称
    //则需要在webServer前面加起项目名称,否则会出现socket连接404状态
    //如没配置项目名,则不用理会
	var socket = new SockJS("/webServer");

    var stompClient = Stomp.over(socket);
    stompClient.connect({}, function(frame) {
        stompClient.subscribe('/topic/getResponse', function(response){
            console.log(JSON.parse(response.body));
        });
    });

}

前端需要引入以下文件:

1.sockjs.min.js

2.stomp.min.js

 

 

 

 

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值