# spring-boot-demo-websocket
> 此 demo 主要演示了 Spring Boot 如何集成 WebSocket,实现后端主动往前端推送数据。网上大部分websocket的例子都是聊天室,本例主要是推送服务器状态信息。前端页面基于vue和element-ui实现。
## 1. 代码
### 1.1. pom.xml
```xml
* WebSocket配置 *
* * @author yangkai.shen * @date Created in 2018-12-14 15:58 */ @Configuration @EnableWebSocket @EnableWebSocketMessageBroker public class WebSocketConfig implements WebSocketMessageBrokerConfigurer { @Override public void registerStompEndpoints(StompEndpointRegistry registry) { // 注册一个 /notification 端点,前端通过这个端点进行连接 registry.addEndpoint("/notification") //解决跨域问题 .setAllowedOrigins("*") .withSockJS(); } @Override public void configureMessageBroker(MessageBrokerRegistry registry) { //定义了一个客户端订阅地址的前缀信息,也就是客户端接收服务端发送消息的前缀信息 registry.enableSimpleBroker("/topic"); } } ``` ### 1.3. 服务器相关实体 > 此部分实体 参见包路径 [com.xkcoding.websocket.model](./src/main/java/com/xkcoding/websocket/model) ### 1.4. ServerTask.java ```java /** ** 服务器定时推送任务 *
* * @author yangkai.shen * @date Created in 2018-12-14 16:04 */ @Slf4j @Component public class ServerTask { @Autowired private SimpMessagingTemplate wsTemplate; /** * 按照标准时间来算,每隔 2s 执行一次 */ @Scheduled(cron = "0/2 * * * * ?") public void websocket() throws Exception { log.info("【推送消息】开始执行:{}", DateUtil.formatDateTime(new Date())); // 查询服务器状态 Server server = new Server(); server.copyTo(); ServerVO serverVO = ServerUtil.wrapServerVO(server); Dict dict = ServerUtil.wrapServerDict(serverVO); wsTemplate.convertAndSend(WebSocketConsts.PUSH_SERVER, JSONUtil.toJsonStr(dict)); log.info("【推送消息】执行结束:{}", DateUtil.formatDateTime(new Date())); } } ``` ### 1.5. server.html ```html