Spring Boot 集成WebSocket
Websocket简介
WebSocket为浏览器和服务端提供了双工异步通信的功能,即浏览器可以向服务端发送消息,服务端也可以向浏览器发送消息。WebSocke是通过一个socket来实现双工异步通信。但是直接使用WebSocket协议开发程序显得特别繁琐,可以使用它的子协议STOMP,它是一个更高级的协议,STOMP协议使用一个基于帧的格式来定义消息,与HTTP的request和response类似。
Spring Boot支持
springboot对于内嵌的tomcat7使用websocket提供了支持,配置源码存于:
org.springframework.boot.autoconfigure.websocket
springboot提供的stater pom是spring boot starter websocket
配置开启WebSocket支持
@Configuration
@EableWebSocketMessageBroker
开启websocket支持,使用STOMP协议传输基于代理的消息(message broker),控制器支持@MessageMapping
public class *** extends AbstractWebsocketMessageBrokerConfigurer
//注册STOMP协议的节点(endpoint),并映射的指定的URL,使用SockJS协议
public void registerStompEndPoints(StompEndPointRegistry registry){ registry.addEndPoint("/endpointWisely").withSockJS(); registry.addEndPoint("/endpointChat").withSockJS(); }
配置消息代理(广播式,点对点式)
public void configureMessageBroker(MessageBrokerRegistry registry){ registry.enableSimpleBroker("/topic","/queue"); }
控制器
浏览器向服务端发送请求,通过@MessageMapping映射的地址
服务端有消息,会对订阅了@sendTo中的路径的浏览器发送消息
@MessageMapping @SendTo("/topic/getResponse")
服务端通过SimMessageTemplate向浏览器发送消息
通过SimMessageTemplate.convertAndSendUser向用户发送消息,第一个参数是接收消息的用户,第二个参数是浏览器订阅的地址,第三个参数是消息本身
页面
添加脚本到src/main/resources/static下
stomp.min.js(STOMP协议的客户端脚本)
sockjs.min.js(SockJS的客户端脚本)
JQuery
连接SockJS的endpoint
var socket = new SockJS('/endpoint节点'); var socket = new SockJS('/endpointWisely'); var socket = new SockJS('/endpointChat');
使用STOMP子协议的WebSocket客户端
var stompClient = Stomp.over(socket);
连接WebSocket服务端
stompClient.connect
通过websocket客户端stompClient.subscribe订阅广播地址/topic/getResponse目标发送的消息
stompClient.subscribe('/topic/getResponse',function(response){ showResponse(JSON.parse(response.body).responseMessage); }
通过stompClient.send向/welcome(@MessageMapping映射地址)发送消息
stompClient.send("/welcome",{},JSON.stringify({'name':name}));
原文地址:https://my.oschina.net/yangty2017/blog/1490367
相关推荐
-
SpringBoot 快速整合Mybatis(去XML化+注解进阶) Java框架
2019-8-23
-
放弃Dubbo,选择最流行的Spring Cloud微服务架构实践与经验总结 Java框架
2020-7-4
-
Spring boot 多数据源 Java框架
2020-7-4
-
Spring Cloud(断路器 Hystrix) Java框架
2020-6-1
-
你知道Spring是怎么解析配置类的吗? Java框架
2020-6-11
-
基于Consul的分布式锁实现 Java框架
2019-3-27
-
疯狂Spring Cloud连载(7)——Ribbon负载均衡器 Java框架
2020-6-8
-
服务端推送技术 Server-sent Events 快速上手 Java框架
2019-8-24
-
springboot打包不同环境配置与shell脚本部署 Java框架
2019-9-18
-
Spring Boot中使用Spring Security进行安全控制 Java框架
2019-3-27