springboot集成WebSockets广播消息(推荐)

  

  

RFC 6455即webSockets协议提供了一种标准化的方式去建立全双工,双方面交流的通道在客户端和服务端甚至单一的TCP连接中进行通信;websocket协议其跟HTTP的TCP协议不同,但是其设计目的是通过HTTP协议进行工作,可以使用40或443年者端口和重新使用现有的防火墙规则。

        得到HTTP/1.1/spring-websocket-portfolio/投资组合   主持人:localhost: 8080   升级:websocket   连接:升级   Sec-WebSocket-Key: Uc9l9TMkWGbHFD2qnFHltg==Sec-WebSocket-Protocol: v10。跺脚,v11.stomp   Sec-WebSocket-Version: 13   来源:http://localhost: 8080      

webSockets的交互是以HTTP协议开始的,使用升级头转向使用升级连接,如果非200状态成功响应就类似于下面的信息,如果WebSocket服务器是运行在nginx是需要配置WebSocket升级请求;如果是运行在云上,需要查阅相关的云是否支持WebSocket;

        HTTP/1.1 101交换协议   升级:websocket   连接:升级   Sec-WebSocket-Accept: 1 qvdfyhu9hpol4jyynxf623gzn0=Sec-WebSocket-Protocol: v10.stomp      

  

在HTTP和其他中一个应用需要很多的URL;应用和客户端是通过请求和响应的风格使用这些网址进行交互;服务端会路由这些请求给基于HTTP的URL或者方法或者头进行处理;
  

  

WebSockets通常在初始化的时候就只有一个链接,所有应用的消息都是通过相同的TCP连接进行流动,这指向一个完全不同的异步,事件驱动的消息传递体系结构。
  

  

WebSocket是一种低端的协议,不像HTTP,其不规定消息中内容中任何的语义信息;这意味着其没有任何方式去路由或者处理这些信息,除非客户端和服务端在语义上达成一致。
  

  

WebSocket客户端和服务端其交流是通过使用更加高级的消息协议(比如跺脚)和基HTTP握于手请求的Sec-WebSocket-Protocol头;

  

  

WebSockets可以使web页面具有动态性和交互性。然而,在许多情况下,Ajax和HTTP流或长轮询(轮询)可以提供一个简单有效的解决方案.北京流和轮询适用于消息不频繁的交互,websocket适用于消息较频繁的交互;在因特网上由于没有升级标题或者关闭了空闲的长链接,受限于在你有限的代理可能会将WebSockets的交互排除;

  

  

<强> 4.1依赖

        & lt; parent>   & lt; groupId> org.springframework.boot   & lt; artifactId> spring-boot-starter-parent   & lt; version> 2.1.1.RELEASE   & lt; relativePath/比;   & lt;/parent>      & lt; dependencies>   & lt; !——websocket依赖——比;   & lt; dependency>   & lt; groupId> org.springframework.boot   & lt; artifactId> spring-boot-starter-websocket   & lt;/dependency>   & lt; !——模板引擎——比;   & lt; dependency>   & lt; groupId> org.springframework.boot   & lt; artifactId> spring-boot-starter-thymeleaf   & lt;/dependency>   & lt;/dependencies>      

<强> 4.2配置

     /* *   * @Author lsc   * @Description & lt; p> websocket配置类& lt;/p>   * @Date 2019/11/12 22:27   *///使用跺脚协议来传输基于消息代理的消息,控制器支持在@ controller类中使用@MessageMapping   @EnableWebSocketMessageBroker   @Configurable   @EnableWebSocket   @ component   公共类WebConfig实现WebSocketMessageBrokerConfigurer {      @Override   公共空间registerStompEndpoints (StompEndpointRegistry注册表){//注册跺脚的端点(端点),并且映射指定的url   registry.addEndpoint ("/websocket”)   .setAllowedOrigins(“*”)//添加允许跨域访问   .withSockJS();//指定SockJS协议   }      @Override   公共空间configureMessageBroker (MessageBrokerRegistry注册表){//启动广播模式代理,只有符合的的路径才发送消息   registry.enableSimpleBroker(“/主题”);   }   }      

  

<强> 5.1接受消息实体

     /* *   * @Author lsc   * @Description & lt; p>接受客户端消息& lt;/p>   * @Date 2019/11/12 22:42   */公开课AcceptMessages {      私人字符串名称;      公共字符串getName () {   返回名称;   }   }      

<强> 5.2发送消息实体

     /* *   * @Author lsc   * @Description & lt; p>发送消息给客户端& lt;/p>   * @Date 2019/11/12 22:42   */公开课sendmessage {      私人字符串responseMessage;      公共字符串getResponseMessage () {   返回responseMessage;   }      公共空间setResponseMessage(字符串responseMessage) {   这一点。responseMessage=responseMessage;   }   }

springboot集成WebSockets广播消息(推荐)