这篇文章主要介绍了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项目
打开首页