ArryLuo / websocket

springboot 整合websocket实现消息推送(主动推送,具体用户推送,群发,定时推送)

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

websocket

springboot 整合websocket实现消息推送(主动推送,具体用户推送,群发,定时推送)

原理图解(与传统http请求差异)

image

##使用websocket有两种方式:

  • 1是使用sockjs,

  • 2是使用h5的标准。使用Html5标准自然更方便简单,所以记录的是配合h5的使用方法(有两个案例,两个websocketserver类,分别对应不同的html页面 )

  • 案例2 是针对不同用户来测试webscoket的几个方法

pom

  • 核心是@ServerEndpoint这个注解。这个注解是Javaee标准里的注解,tomcat7以上已经对其进行了实现, 如果是用传统方法使用tomcat发布项目,只要在pom文件中引入javaee标准即可使用。

    <dependency>
      <groupId>javax</groupId>
      <artifactId>javaee-api</artifactId>
      <version>7.0</version>
      <scope>provided</scope>
    </dependency>
    
  • 但使用springboot的内置tomcat时,就不需要引入javaee-api了,spring-boot已经包含了。使用springboot的websocket功能首先引入springboot组件

      <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-websocket</artifactId>
          <version>1.3.5.RELEASE</version>
      </dependency>
    
  • 顺便说一句,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

测试 案例2

About

springboot 整合websocket实现消息推送(主动推送,具体用户推送,群发,定时推送)


Languages

Language:Java 77.0%Language:HTML 23.0%