SpringBoot2.0整合WebSocket代码实例

  

这篇文章主要介绍了SpringBoot2.0整合WebSocket代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

  

之前公司的某个系统为了实现推送技术,所用的技术都是Ajax轮询,这种方式浏览器需要不断的向服务器发出请求,显然这样会浪费很多的带宽等资源,所以研究了下WebSocket,本文将详细介绍下。

  

<强>一、什么是WebSocket ?
  

  

WebSocket是HTML5开始提供的一种在单个TCP连接上进行全双工通讯的协议,能更好的节省服务器资源和带宽,并且能够更实时地进行通讯。

  

WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据,在WebSocket API中,浏览器和服务器只需要完成一次握的手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。

  

<强>二,SpringBoot整合WebSocket
  

  

新建一个弹簧启动项目spring-boot-websocket,按照下面步骤操作。

  

砰的一声。xml引入jar包
  

        & lt; dependency>   & lt; groupId> org.springframework.boot   & lt; artifactId> spring-boot-starter-websocket   & lt;/dependency>      

新建WebSocket的配置类
  

  

这个配置类检测带注解@ServerEndpoint的bean并注册它们,配置类代码如下:

        @ configuration   公开课WebSocketConfig {/* *   *给春容器注入这个ServerEndpointExporter对象   *相当于xml:   * & lt; beans>   * & lt; bean id=皊erverEndpointExporter”类=" org.springframework.web.socket.server.standard.ServerEndpointExporter "/比;   * & lt;/beans>   * & lt; p>   *检测所有带有@serverEndpoint注解的bean并注册他们。   *   * @return   */@ bean   公共ServerEndpointExporter ServerEndpointExporter () {   System.out.println(“我被注入了”);   返回新ServerEndpointExporter ();   }   }      

新建WebSocket的处理类
  

  

这个处理类需要使用@ServerEndpoint,这个类里监听连接的建立关闭,消息的接收等,具体代码如下:

        @ServerEndpoint (value=" https://www.yisu.com/ws/asset ")   @ component   公开课WebSocketServer {      @PostConstruct   公共空间init () {   system . out。println (“websocket加载”);   }   私有静态日志记录器=LoggerFactory.getLogger (WebSocketServer.class);   私有静态最终AtomicInteger>   & lt; html>   & lt; head>   & lt;元charset=皍tf - 8”比;   & lt; title> websocket测试& lt;/title>   & lt;脚本src=" http://libs.baidu.com/jquery/2.0.0/jquery.min.js "祝辞& lt;/script>   & lt;风格类型=" text/css "比;   h4, h5 {   text-align:中心;   }   & lt;/style>   & lt;/head>   & lt; body>      & lt; h4> WebSocket测试,客户端接收到的消息如下:& lt;/h4>      & lt; textarea id="消息id“readonly=关口“readonly”==?0”比“150”行;      & lt;/textarea>         & lt;脚本type=" text/javascript祝辞   var插座;   如果(typeof (WebSocket)==岸ㄒ濉?{   console.log(“遗憾:您的浏览器不支持WebSocket”);   其他}{   console.log(“恭喜:您的浏览器支持WebSocket”);//实现化WebSocket对象//指定要连接的服务器地址与端口建立连接//注意ws, wss使用不同的端口。我使用自签名的证书测试,//无法使用wss,浏览器打开WebSocket时报的错//ws对应http, wss对应https。   套接字=new WebSocket (ws://localhost: 8080/ws/资产”);//连接打开事件   套接字。onopen=function () {   控制台。日志(“插座已打开”);   套接字。发送(“消息发送测试(客户端)”);   };//收到消息事件   套接字。onmessage=函数(味精){   $(" #消息id”) .append(味精。数据+“\ n”);   console.log(味精。数据);   };//连接关闭事件   套接字。onclose=function () {   console.log(“插座已关闭”);   };//发生了错误事件   套接字。onerror=function () {   alert("套接字发生了错误”);   }//窗口关闭时,关闭连接   window.unload=function () {   socket.close ();   };   }   & lt;/script>      & lt;/body>   & lt;/html>      

<强>三,查看运行效果
  

  

启动SpringBoot项目

  

打开首页

SpringBoot2.0整合WebSocket代码实例