第一步:引入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