码迷,mamicode.com
首页 > 编程语言 > 详细

springboot深入学习(四)-----tomcat配置、websocket

时间:2019-01-16 00:13:39      阅读:272      评论:0      收藏:0      [点我收藏+]

标签:direction   发送消息   异步通信   template   替换   通用   strong   oca   浏览器   

 

一、更改servlet服务器

springboot中默认可以集成多种servlet容器,当引入如下依赖时:

技术分享图片

springboot默认以tomcat作为项目的servlet容器,如果用户想要替换tomcat为jetty或者undertow,只需要做以下更改:

技术分享图片

 

二、tomcat配置

  目前来说tomcat受众应该还是更广,所以本人暂时选用tomcat,相关配置如下:

  a、通用servlet容器配置(也就是针对jetty、undertow都有效的)

  技术分享图片

  b、tomcat特有

  技术分享图片

 

三、websocket

  websocket为浏览器以及服务器实现了双工异步通信的功能,说白了,就是客户端可以向服务端发送消息,服务端也可以向客户端发送消息。但是我们直接使用websocket协议开发起来特别繁琐,一般使用更高级别的协议,stomp,使用一个基于帧的

格式来定义消息,与http的request以及response类似。springboot中使用websocket基于spring-boot-starter-websocket。

  1、广播式

  服务端有消息,会发送到当前情况所有连接在服务端的客户端上去。

  完整的项目结构:

  技术分享图片

 

  a、配置websocket

  技术分享图片

  b、浏览器发送到服务器端使用的消息类

  技术分享图片

  c、服务端发送到浏览器的消息类

  技术分享图片

  d、服务端

  技术分享图片

  e、新建ws.html,放到resources/templates路径下

技术分享图片

技术分享图片

技术分享图片

f、页面请求入口

技术分享图片

 

   测试运行结果:

  1、浏览器中打开多个http://localhost:8080/ws,并打开连接

  技术分享图片

  输入阿里-马云,结果如下:

  技术分享图片

    技术分享图片

  搞定,客户端可以发送消息到服务端,服务端可以向订阅了的所有客户端发送对应的消息。

 

四、总结

  为啥有了http协议,还需要websocket呢,因为http协议只能做到客户端主动请求服务端,然后获得相应的数据,但是服务端不能主动推送数据到客户端。因此之前都是使用轮询的方式来获取到相应的数据,这种方式的效率

非常低,因为需要不停的打开与断开连接。websocket基于tcp协议,并且客户端可以发送请求到服务端,服务端也可以发送数据到客户端。具体特点如下:

技术分享图片

 

websocket原理图:

技术分享图片

解释一波英文:

  handshake:握手

  acknowledgement:确认

  bi-directional messages:双向数据交流

 

springboot深入学习(四)-----tomcat配置、websocket

标签:direction   发送消息   异步通信   template   替换   通用   strong   oca   浏览器   

原文地址:https://www.cnblogs.com/alimayun/p/10269614.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!