websocket
springboot 整合websocket实现消息推送(主动推送,具体用户推送,群发,定时推送)
使用WebSocket构建交互式Web应用程序 本指南将引导您完成创建“hello world”应用程序的过程,该应用程序在浏览器和服务器之间来回发送消息。WebSocket是一个非常薄,轻量级的TCP层。它使得非常适合使用“子协议”来嵌入消息。在本指南中,我们将深入研究并使用Spring的STOMP消息来创建交互式Web应用程序。 https://spring.io/guides/gs/messaging-stomp-websocket/
原理图解(与传统http请求差异)
##使用websocket有两种方式:
1是使用sockjs,
2是使用h5的标准。使用Html5标准自然更方便简单,所以记录的是配合h5的使用方法(有两个案例,两个websocketserver类,分别对应不同的html页面 )
案例2 是针对不同用户来测试webscoket的几个方法
pom
核心是@ServerEndpoint这个注解。这个注解是Javaee标准里的注解,tomcat7以上已经对其进行了实现, 如果是用传统方法使用tomcat发布项目,只要在pom文件中引入javaee标准即可使用。
javax
javaee-api
7.0
provided
但使用springboot的内置tomcat时,就不需要引入javaee-api了,spring-boot已经包含了。使用springboot的websocket功能首先引入springboot组件
org.springframework.boot
spring-boot-starter-websocket
1.3.5.RELEASE
顺便说一句,springboot的高级组件会自动引用基础的组件,像spring-boot-starter-websocket就引入了spring-boot-starter-web和spring-boot-starter,所以不要重复引入。
配置类(WebSocketConfig)
使用@ServerEndpoint创立websocket endpoint [配置端点类以及具体实现:WebSocketServer] 首先要注入ServerEndpointExporter,这个bean会自动注册使用了@ServerEndpoint注解声明的Websocket endpoint。 要注意,如果使用独立的servlet容器,而不是直接使用springboot的内置容器,就不要注入ServerEndpointExporter,因为它将由容器自己提供和管理
测试 案例1
1、启动项目
3、可以打开多个页面,后台控制台会答应当前在线人数的变化
测试 案例2