Spring boot + Websocket 初篇
来源:互联网 发布:js 获取tr 再获取td 编辑:程序博客网 时间:2024/06/08 19:14
dependencies { compile('org.springframework.boot:spring-boot-starter-security') compile('org.springframework.boot:spring-boot-starter-thymeleaf') compile('org.springframework.boot:spring-boot-starter-websocket') compile('org.thymeleaf.extras:thymeleaf-extras-springsecurity4') compile('org.mybatis.spring.boot:mybatis-spring-boot-starter:1.3.0') runtime('mysql:mysql-connector-java') compile('org.springframework.boot:spring-boot-devtools')}
package com.demo.entity;import com.demo.mapper.CollectorMapper;import org.springframework.web.socket.TextMessage;import org.springframework.web.socket.WebSocketSession;import java.io.IOException;import java.util.List;import java.util.TimerTask;// 定时从数据库中捞数据public class TimerDBTask extends TimerTask { private WebSocketSession socketSession; private CollectorMapper collectorMapper; private int total = 0; @Override public void run() { int latest = collectorMapper.countTotal(); if(latest > total){ List<CollectData> dataList = collectorMapper.getCollectedValues(); StringBuilder initial = new StringBuilder(); for(CollectData collectData: dataList){ initial.append(collectData.toString()); initial.append("|"); } if(initial.length() > 1) { initial.deleteCharAt(initial.length() - 1); } total = latest; try { socketSession.sendMessage(new TextMessage(initial.toString())); } catch (IOException e) { e.printStackTrace(); } } } public TimerDBTask(WebSocketSession session, CollectorMapper collectorMapper){ this.socketSession = session; this.collectorMapper = collectorMapper; }}
package com.demo.config;import com.demo.entity.MessageHandler;import com.demo.mapper.CollectorMapper;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.web.socket.WebSocketHandler;import org.springframework.web.socket.config.annotation.EnableWebSocket;import org.springframework.web.socket.config.annotation.WebSocketConfigurer;import org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry;@Configuration@EnableWebSocketpublic class WebsocketConfig implements WebSocketConfigurer{ @Autowired private CollectorMapper collectorMapper; @Override public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) { registry.addHandler(messageHandler(), "/websocket-endpoint"); } @Bean public WebSocketHandler messageHandler(){ return new MessageHandler(this.collectorMapper); }}
package com.demo.entity;import com.demo.mapper.CollectorMapper;import org.springframework.web.socket.CloseStatus;import org.springframework.web.socket.TextMessage;import org.springframework.web.socket.WebSocketMessage;import org.springframework.web.socket.WebSocketSession;import org.springframework.web.socket.handler.TextWebSocketHandler;import java.util.Timer;public class MessageHandler extends TextWebSocketHandler { private Timer timer; private CollectorMapper collectorMapper; public MessageHandler(){ } public MessageHandler(CollectorMapper collectorMapper){ this.collectorMapper = collectorMapper; } @Override public void afterConnectionEstablished(WebSocketSession session) throws Exception { // The websocket has been opened // might save this session object so that can send messages to it outside of this method String loginUser = session.getPrincipal().getName(); timer = new Timer(true); long delay = 0l; TimerDBTask dbTask = new TimerDBTask(session, collectorMapper); timer.schedule(dbTask, delay, 60000);// session.sendMessage(new TextMessage("You're now connected to the server.This is the first message.")); } @Override public void handleMessage(WebSocketSession session, WebSocketMessage<?> message) throws Exception { super.handleMessage(session, message); } @Override protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception { // a message has been received System.out.println("Message received:" + message.getPayload()); if(!session.isOpen()){ timer.cancel(); return; } super.handleTextMessage(session, message); } @Override public void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception { super.afterConnectionClosed(session, status); // The websocket has been closed }}
阅读全文
0 0
- Spring boot + Websocket 初篇
- Spring Boot + WebSocket Demo
- spring-boot整合websocket
- spring boot Websocket
- spring boot-3(WebSocket)
- Spring boot 整合websocket
- spring boot websocket
- Spring boot + Websocket 再篇
- Spring boot websocket消息推送
- Spring boot websocket简单例子
- 173. Spring Boot WebSocket:群聊
- Spring Boot + Gradle + Websocket 构建推送服务
- Spring Boot WebSocket整合及nginx配置
- Spring Boot学习笔记(六) WebSocket
- Spring-boot集成Netty做websocket服务端
- Spring boot WebSocket stomp简单例子
- spring-boot + websocket 打包问题汇总
- java之Websocket后台(基于Spring boot)
- 干货看再多,也不一定能成为优秀产品经理
- 替换tomcat中webapp里的前端文件,浏览器没有检查到更新
- 单例模式在多线程下的安全性
- android Ble通信
- 关于求最大公约数gcd的一些证明
- Spring boot + Websocket 初篇
- 产品经理,要“看懂”、更要“看破”
- 心理估值:什么样的价值对用户有意义?
- javaweb工程 servlet文件上传与下载
- 触发欢迎回家-如何minecraft检测人物是否在某一位置
- 2017人人都是产品经理年度作家评选|为产品圈和运营圈的创作者打Call!
- sysbench测试
- 全球人才的纳斯达克SelfSell潜入英法、瑞士、新加坡“偷人”?
- Linux克隆后的网卡设置