Spring Boot 构建应用——基于 WebSocket 的消息推送
2017-05-05 10:12
726 查看
转载请注明出处:http://blog.csdn.net/smartbetter/article/details/70853135
WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。在 WebSocket API 中,浏览器和服务器只需要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送。浏览器通过 JavaScript 向服务器发出建立 WebSocket 连接的请求,连接建立以后,客户端和服务器端就可以通过 TCP 连接直接交换数据。当你获取 Web Socket 连接后,你可以通过 send() 方法来向服务器发送数据,并通过 onmessage 事件来接收服务器返回的数据。
添加 WebSocket 的配置文件:
编写 WebSocket 代码:
这样,在服务端调用 sendMessage 就能给客户端发送消息了。
WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。在 WebSocket API 中,浏览器和服务器只需要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送。浏览器通过 JavaScript 向服务器发出建立 WebSocket 连接的请求,连接建立以后,客户端和服务器端就可以通过 TCP 连接直接交换数据。当你获取 Web Socket 连接后,你可以通过 send() 方法来向服务器发送数据,并通过 onmessage 事件来接收服务器返回的数据。
1.客户端开发(JavaScript)
这里使用的 WebSocket 是 HTML5 原生的 WebSocket:<!-- 播放音乐 --> <audio id="notice" loop="loop"> <source src="/mp3/song.mp3" type="audio/mpeg" /> </audio> <!-- WebSocket客户端 --> <script> var websocket = null; if('WebSocket' in window) { websocket = new WebSocket('ws://localhost:8080/webSocket'); } else { alert('该浏览器不支持WebSocket!'); } websocket.onopen = function (event) { console.log('建立连接'); } websocket.onclose = function (event) { console.log('连接关闭'); } websocket.onmessage = function (event) { console.log('收到消息:' + event.data) // 播放音乐,弹窗提醒 document.getElementById('notice').play(); if (confirm("提示")){ console.log('确定按钮'); //停止播放 document.getElementById('notice').pause(); } } websocket.onerror = function () { alert('WebSocket通信发生错误!'); } window.onbeforeunload = function () { websocket.close(); } </script>
2.服务端开发(Java)
Spring Boot 使用 WebSocket 需要添加起步依赖:<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId> </dependency>
添加 WebSocket 的配置文件:
@Configuration public class WebSocketConfig { @Bean public ServerEndpointExporter serverEndpointExporter() { return new ServerEndpointExporter(); } }
编写 WebSocket 代码:
import javax.websocket.Session; @Component @ServerEndpoint("/webSocket") public class WebSocket { private Logger logger = LoggerFactory.getLogger(getClass()); private Session session; private static CopyOnWriteArraySet<WebSocket> webSocketSet = new CopyOnWriteArraySet<>(); @OnOpen public void onOpen(Session session) { this.session = session; webSocketSet.add(this); logger.info("[WebSocket消息] 有新的连接, 总数:{}", webSocketSet.size()); } @OnClose public void onClose() { webSocketSet.remove(this); logger.info("[WebSocket消息] 连接断开, 总数:{}", webSocketSet.size()); } @OnMessage public void onMessage(String message) { logger.info("[WebSocket消息] 收到客户端发来的消息:{}", message); } public void sendMessage(String message) { for (WebSocket webSocket: webSocketSet) { logger.info("[WebSocket消息] 广播消息, message={}", message); try { webSocket.session.getBasicRemote().sendText(message); } catch (Exception e) { e.printStackTrace(); } } } }
这样,在服务端调用 sendMessage 就能给客户端发送消息了。
相关文章推荐
- 详解在Spring Boot框架下使用WebSocket实现消息推送
- 采用Gradle快速构建基于Spring boot的MVC应用
- 使用Spring Boot快速构建基于SQLite数据源的应用
- 二、spring Boot构建的Web应用中,基于MySQL数据库的几种数据库连接方式进行介绍
- 基于Spring Boot构建应用开发规范
- 在Spring Boot框架下使用WebSocket实现消息推送
- SpringBoot的WebSocket基于STOMP协议自动广播推送配置
- springboot整合websocket实现一对一消息推送和广播消息推送
- 使用Spring Boot快速构建基于SQLite数据源的应用
- 基于springboot+mybatis的微信公众号开发第二篇-验证与消息推送的基本设置
- 在Spring Boot框架下使用WebSocket实现消息推送
- 采用Gradle快速构建基于Spring boot的MVC应用
- 在Spring Boot框架下使用WebSocket实现消息推送
- 在Spring Boot框架下使用WebSocket实现消息推送
- 在Spring Boot框架下使用WebSocket实现消息推送
- 在Spring Boot框架下使用WebSocket实现消息推送
- 在Spring Boot框架下使用WebSocket实现消息推送
- Spring Boot 构建应用——整合消息中间件 RabbitMQ
- [ Spring Boot ] 整合 Websocket 实现消息推送框架的设计笔记
- 使用Spring Boot快速构建基于SQLite数据源的应用