spring boot 集成websocket实现实时推送
来源:互联网 发布:3d软件培训 编辑:程序博客网 时间:2024/05/26 09:54
websocket暂时能想到的应用是浏览器聊天和后台日志实时显示到前台。
当后台启动程序后,等待前台连接,连接上之后,前后台就可以相互发送数据了。
先贴上pom配置:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId> </dependency> <dependency> <groupId>org.webjars</groupId> <artifactId>webjars-locator</artifactId> </dependency> <dependency> <groupId>org.webjars</groupId> <artifactId>sockjs-client</artifactId> <version>1.0.2</version> </dependency> <dependency> <groupId>org.webjars</groupId> <artifactId>stomp-websocket</artifactId> <version>2.3.3</version> </dependency> <dependency> <groupId>org.webjars</groupId> <artifactId>jquery</artifactId> <version>3.1.0</version> </dependency>
websocket配置类
@Configuration@EnableWebSocketMessageBrokerpublic class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer { @Override public void configureMessageBroker(MessageBrokerRegistry config) { config.enableSimpleBroker("/topic");//配置客户端订阅前缀 config.setApplicationDestinationPrefixes("/app");//配置客户端发送消息路径前缀 } @Override public void registerStompEndpoints(StompEndpointRegistry registry) { //"/gs-guide-websocket"是前台连接的端点url registry.addEndpoint("/gs-guide-websocket").withSockJS(); }}
java服务器端推送用例
@Componentpublic class WebSocketTemplate { private SimpMessagingTemplate messagingTemplate; @Autowired public WebSocketTemplate(SimpMessagingTemplate messagingTemplate) { this.messagingTemplate = messagingTemplate; } //向订阅了 /topic/hello 客户端websocket实例发送数据 public void sendMessage(String message){ messagingTemplate.convertAndSend("/topic/hello","hello,client"); }}
服务器端接收客户端发送的消息并反馈
@Controllerpublic class GreetingController { @MessageMapping("/hello") @SendTo("/topic/hello") public String greeting(String message) throws Exception { Thread.sleep(1000); // simulated delay return "Hello, client! I get your message"; }}
客户端需要的
<script src="/webjars/jquery/jquery.min.js"></script><script src="/webjars/sockjs-client/sockjs.min.js"></script><script src="/webjars/stomp-websocket/stomp.min.js"></script>
var stompClient = null; //连接到服务器 function connect() { var socket = new SockJS('/gs-guide-websocket'); stompClient = Stomp.over(socket); stompClient.connect({}, function (frame) { console.log('Connected: ' + frame); //接收服务端发送给/topic/greetings的订阅消息 stompClient.subscribe('/topic/greetings', function (greeting) { console.log(greeting); JSON.parse(greeting.body);//解析json字符串为对象 }); }); //断开连接 function disconnect() { if (stompClient !== null) { stompClient.disconnect(); } //向服务器发送消息 function sendHello() { stompClient.send("/app/hello", {}, "hello server");}}}
存在的问题:
客户端刷新后没有断开连接的话,服务器再次发送数据给客户端会接收到两次消息。
如果有了解的,希望指教一下。
阅读全文
0 0
- spring boot 集成websocket实现实时推送
- Spring Boot 使用 WebSocket 实现消息推送 及 WebSocket原理
- spring boot集成WebSocket实时输出日志到web页面
- Spring boot websocket消息推送
- 在Spring Boot框架下使用WebSocket实现消息推送
- 在Spring Boot框架下使用WebSocket实现消息推送
- 在Spring Boot框架下使用WebSocket实现消息推送
- 在Spring Boot框架下使用WebSocket实现消息推送
- 在Spring Boot框架下使用WebSocket实现消息推送
- 在Spring Boot框架下使用WebSocket实现消息推送
- 在Spring Boot框架下使用WebSocket实现消息推送
- Spring Boot + Gradle + Websocket 构建推送服务
- Spring WebSocket实现消息推送
- 【反ajax】webSocket实现实时推送功能
- 【反ajax】webSocket实现实时推送功能
- redis+websocket 实现统计数据实时推送
- php实现websocket实时消息推送
- php实现websocket实时消息推送
- -TEST 19 for NOIP 。。。(105-300)
- S03字符串、向量和数组
- oracle:修改表的内容
- 冒泡排序法
- 从输入一个url到页面出现经历了什么过程
- spring boot 集成websocket实现实时推送
- 外链式CSS与导入式CSS的区别
- 【XMUT】贪心专题A
- 2017年10月31日提高组T3 回宿舍
- PAT甲级 2022 and 2018
- 回溯法——0-1背包问题
- Unity3D游戏场景之播放音频文件
- Android FlowLayout流布局
- webstorm打开后 一直停留在scanning files to index