SpringBoot 使用WebSocket
来源:互联网 发布:windows insider 编辑:程序博客网 时间:2024/06/15 04:12
WebSocket协议是基于TCP的一种新的网络协议。它实现了浏览器与服务器全双工(full-duplex)通信——允许服务器主动发送信息给客户端。
WebSocket通信协议于2011年被IETF定为标准RFC 6455,并被RFC7936所补充规范。
使用WebSocket避免了以往的通过setInterval定时任务来获取服务状态的弊端(有时会存在无效请求或者状态丢失),客户端可以及时获取到服务器状态并做处理或者展现,SpringBoot中使用起来也相对简单
引入依赖
<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>bootstrap</artifactId> <version>3.3.7</version> </dependency> <dependency> <groupId>org.webjars</groupId> <artifactId>jquery</artifactId> <version>3.1.0</version> </dependency>
页面中引入需要的JavaScript
<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('/ypmc_websocket'); stompClient = Stomp.over(socket); stompClient.connect({}, function (frame) { console.log('Connected: ' + frame); stompClient.subscribe('/ypmc/message', function (greeting) { var response = JSON.parse(greeting.body); }); });}
WebSocket配置初始化
@Configuration@EnableWebSocketMessageBrokerpublic class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer { @Override public void configureMessageBroker(MessageBrokerRegistry config) { config.enableSimpleBroker("/ypmc"); config.setApplicationDestinationPrefixes("/app"); } @Override public void registerStompEndpoints(StompEndpointRegistry registry) { registry.addEndpoint("/ypmc_websocket").withSockJS(); }}
当客户端和服务器建立连接之后,他们之间就可以相互进行通信了,首先,第一种场景:
客户端主动发起请求
function sendName() { stompClient.send("/app/hello", {}, JSON.stringify({'requestMessage': 'hello server'}));}
服务端接收并返回给客户端
@Controllerpublic class WebSocketController { @MessageMapping("/hello") @SendTo("/ypmc/message") public ResponseMessage getMessage(RequestMessage requestMessage) throws Exception { return ResponseMessage.builder().message("hello " + requestMessage).build(); }}
第二种场景
服务器主动向客户端推送消息
@Autowiredprivate SimpMessagingTemplate messagingTemplate;messagingTemplate.convertAndSend("/ypmc/message", responseMessage);
阅读全文
0 0
- SpringBoot 使用WebSocket
- springboot websocket
- SpringBoot-Websocket
- SpringBoot + WebSocket
- springboot使用websocket遇到的坑
- Springboot下使用WebSocket和浏览器进行长连接通信
- 关于Springboot + hibernate 使用websocket的详细代码
- 使用SpringBoot快速搭建WebSocket实现消息推送
- springBoot整合webSocket
- SpringBoot整合WebSocket案例
- SpringBoot之WebSocket练习
- SpringBoot中的WebSocket广播
- SpringBoot集成WebSocket
- SpringBoot 快速实现WebSocket
- springboot-websocket作为客户端
- SpringBoot 配置 WebSocket
- SpringBoot学习(四)SpringBoot和WebSocket
- SpringBoot入门(七)-初识WebSocket
- //创建一个数组, //实现函数init()初始化数组、 //实现empty()清空数组、 //实现reverse()函数完成数组元素的逆置。 //要求:自己设计函数的参数,返回值。
- LeetCode448. Find All Numbers Disappeared in an Array 解答
- case语句使用举例
- MongoDB基本操作
- 洛谷 [P2420] 让我们异或吧
- SpringBoot 使用WebSocket
- Angular路由
- game 游戏 (斜率优化dp)
- EasyUI时间插件----年月日,年月日时分秒
- 天凉心毋凉
- 对Android权限一些新的理解
- lua从固定table中随机出不重复的子table
- 【亲测可用】 CentOS6.8 网络配置ip 连接外网
- 1_各种软件下载