学习Java第二十二天——苍穹外卖Day10-all
文章目录
- Day10内容:
- Day10-01
- Day10-02
- Day10-03
- Day10-04
- Day10-05~06
- Day10-07
- Day10-08~09
- Day10-10~12
- Day10-13~15
Day10内容:
- Spring Task:
-
- 订单状态定时处理
- WebSocket:
-
- 来单提醒
-
- 客户催单
Day10-01
Spring Task_介绍:
以前我们开发的程序,全都是基于这种请求响应的,就是我们客户端发送一个http请求,来请求我们某个control,然后我们服务端是不是再去处理某些逻辑。而Spring Task定时自动触发。
Day10-02
- Spring Task_cron表达式
Day10-03
- Spring Task_入门案例
Day10-04
- 订单状态定时处理_需求分析
那这个地方咱们还需要去做接口设计吗?
其实就不需要了对吧
你看我们这个地方是通过定时任务
它是不是自动执行的
并不需要我们前端是不是发送http请求来触发
所以这个地方呢就没有接口这个概念了
Day10-05~06
- 订单状态定时处理_代码开发
Day10-07
- WebSocket_介绍
0:00:00.50 前面咱们是已经完成了订单状态
0:00:02.78 定时处理这个业务功能的开发
0:00:05.13 那接下来呢咱们来看我们课程的下一个小节
0:00:07.89 就是我们这个web socket
0:00:09.74 那么在这个章节当中呢
0:00:11.36 咱们主要是分成这么两部分来讲
0:00:13.52 首先第一个呢是web socket的一个介绍
0:00:16.22 那在这一部分呢
0:00:17.42 咱们主要就是先来了解一下什么是web socket
0:00:20.70 它的特点是什么
0:00:21.99 以及它的应用场景
0:00:23.58 那这些都介绍完之后呢
0:00:25.38 咱们再通过一个入门案例的方式
0:00:27.51 来具体学习一下这个web socket
0:00:30.06 它的用法好
0:00:31.26 那接下来呢咱们先来看第一部分
0:00:33.06 就是web socket的一个介绍
0:00:35.76 那什么是web socket呢
0:00:37.53 哎你看这对他呢做了一个简单的描述啊
0:00:40.41 你看web socket呢是基于tcp的一种新的网络协议
0:00:44.83 那么说到这个协议的话呢
0:00:46.69 咱们应该比较熟悉的就是http协议了
0:00:49.84 而这个web socket呢是不同于http的
0:00:53.35 另外的一种网络协议
0:00:55.16 那它这个协议的特点是什么呢
0:00:57.35 你看它是实现了浏览器与服务器全双工通信
0:01:02.21 那什么叫做全双工通信呢
0:01:04.59 唉其实简单来说就是
0:01:06.54 浏览器和服务器只需要完成一次握手
0:01:09.65 那么两者之间呢就可以创建这种持久性的连接
0:01:13.62 并且呢进行双向数据传输
0:01:16.33 而我们刚才说的这个全双工通信呢
0:01:19.03 其实主要就体现在这
0:01:20.53 也就是说
0:01:21.06 浏览器和服务器呢可以实现双向数据传输
0:01:24.84 那么说的更直白一点呢
0:01:26.47 实际上就是浏览器可以向服务器来传输数据
0:01:30.18 同时呢
0:01:31.08 服务器呢也可以主动向浏览器来传输数据
0:01:34.65 那么它们之间是双向的
0:01:36.59 那么看到它这个特点
0:01:38.04 我们可以想一下h t t p
0:01:39.90 那么h t t p能做到这个效果吗
0:01:42.03 那很显然是不可以的
0:01:43.70 所以接下来呢咱们就直接来对比一下啊
0:01:46.59 看看http协议跟我们这个web socket协议
0:01:50.37 具体都有哪些不一样的地方
0:01:52.55 首先呢咱们先来看一下这个http哎
0:01:55.37 因为这种协议呢
0:01:56.45 咱们相对来说呢应该是比较了解的
0:01:58.73 那么你看h t t p协议呢
0:02:01.01 它其实是这个样子的
0:02:02.42 那么左侧呢是client
0:02:04.73 那么是不是代表的就是我们这个客户端
0:02:06.95 那一般呢咱们的客户端是不是都是浏览器啊
0:02:09.59 对吧
0:02:09.94 浏览器居多
0:02:11.16 然后右边这个是server
0:02:13.15 那么我们可以称为叫做服务器
0:02:15.18 而这个客户端跟这个服务器呢如何交互呢
0:02:18.72 咱们是不是就可以基于http来进行交互啊
0:02:22.28 那么首先呢是不是我们这个客户端
0:02:24.30 浏览器可以发送一个请求
0:02:26.43 哎
0:02:26.63 也就是一个request对吧
0:02:28.28 那么这个请求就可以请求到我们这个服务器
0:02:31.11 服务器接收到这个请求之后呢
0:02:33.15 它是不是就可以进行相应的处理
0:02:35.12 处理完之后呢
0:02:36.27 就可以给我们这个浏览器一个响应
0:02:38.31 哎也就是一个response
0:02:39.80 那么这其实就是一个请求响应这么一个过程
0:02:43.18 那现在咱们这个关注点应该放在哪儿呢
0:02:45.61 大家来看
0:02:46.36 你看他这个客户端浏览器跟我们这个服务器
0:02:49.18 它的这个交互的顺序
0:02:51.07 那么一定是我们这个客户端
0:02:53.17 是不是先发送一个请求
0:02:54.97 然后服务器是不是才能给他一个响应啊
0:02:57.68 那这个顺序能颠倒过来吗
0:02:59.69 唉肯定是不可以的
0:03:01.25 那么我们这个服务器呢是不可能主动
0:03:04.19 是不是给我们这个客户端浏览器来发送消息啊
0:03:07.16 那么一定是浏览器先请求服务器
0:03:10.21 然后服务器是不是才能给他一个响应
0:03:12.62 所以说这种交互方式呢我们通常称为什么呢
0:03:15.91 叫做请求响应模式
0:03:17.68 那么这是我们强调了一下它这个执行的顺序
0:03:20.80 或者是我们这个请求的一个方向性对吧
0:03:23.91 那么还有一点我们需要注意的是什么呢
0:03:26.31 你看客户端发送这个请求之后
0:03:28.56 那么它是不是就会跟我们这个服务器
0:03:30.69 建立一个连接
0:03:31.63 那么当我这个服务器响应完之后呢
0:03:34.63 那这个连接还存在吗
0:03:36.22 它是不是就不存在了
0:03:37.78 所以说呢基于http建立的这种连接呢
0:03:41.62 我们可以称为叫做短连接
0:03:43.45 那这一点呢其实跟这个web socket也是不一样的
0:03:46.86 那么以后如果说我们这个客户端
0:03:49.37 浏览器还要跟服务器交互
0:03:51.44 那它是不是需要再次发送请求
0:03:53.69 那这样的话是不是应该就是第二个连接了
0:03:56.03 跟上一个创建的这个链接
0:03:57.59 是不是应该是没有任何关系啊
0:03:59.22 好那么这是我们这个http协议啊
0:04:02.08 是这个样子的
0:04:03.09 然后接下来呢咱们再来看一下这个web socket协议
0:04:06.40 那么你看web socket协议呢
0:04:08.43 它其实也是分成这么两端
0:04:10.47 左边那也是client对吧
0:04:12.75 那么代表的也是客户端
0:04:14.19 一般呢也就是浏览器了好
0:04:16.12 而这个右边呢是server
0:04:17.86 也就是服务器
0:04:18.87 那么你看它这个交互的过程
0:04:21.32 跟这个http协议就非常不一样了
0:04:24.50 首先第一步呢是需要客户端发送一个请求
0:04:27.72 那么请求这个服务端
0:04:29.00 那这个过程叫做handshake
0:04:30.83 翻译过来呢其实就是握手
0:04:32.80 说白了就是客户端需要跟服务端
0:04:35.37 建立这么一个连接
0:04:36.83 我们这个服务器呢就会给这个客户端一个应答
0:04:40.11 哎你看就是这个acknowledgement对吧
0:04:42.60 这个叫做应答
0:04:43.82 那么一旦它应答上之后呢
0:04:46.25 这样的话
0:04:46.76 我们这个客户端浏览器跟这个服务器呢
0:04:49.52 其实就建立好这个连接了
0:04:51.35 那么一旦这个连接建立好了呢
0:04:53.50 那么我们这个客户端跟服务器呢
0:04:55.79 就可以进行双向通信了
0:04:57.85 那什么叫双向通信呢
0:04:59.31 唉也就是说我们这个浏览器呢
0:05:01.75 既可以主动向服务器发送数据
0:05:04.50 那同时呢
0:05:05.35 这个服务器也可以向客户端
0:05:07.62 浏览器来主动发送数据
0:05:09.81 那这一点是不是跟这边这个请求响应
0:05:12.16 是不一样的
0:05:12.97 那么我们这个地方强调的是什么呢
0:05:14.86 是双向消息对吧
0:05:16.36 双向数据通信
0:05:17.68 那他这个过程啊
0:05:19.00 我们其实可以举一个现实当中的例子
0:05:21.41 咱们来想一下
0:05:22.33 比如说什么呢
0:05:23.24 现实当中我们两个人打电话
0:05:25.44 是不是只要这两个人的电话接通之后
0:05:28.00 他俩是不是都可以主动去说话呀
0:05:30.25 那么只要任意一方说话
0:05:32.05 另外一方是不是都能听到啊
0:05:33.87 那他这个打电话的过程
0:05:35.37 是不是就是双向的消息啊
0:05:37.00 而我们这个web socket呢就是这么一个效果
0:05:40.19 并且呢咱们看到这根柱子对吧
0:05:42.80 它其实代表的是我们这个连接的生命周期
0:05:45.31 那么你看它是不是一直保持这个连接啊
0:05:47.81 所以说基于web socket创建的这个连接呢
0:05:51.12 叫做长连接或者叫做持久性的连接
0:05:54.25 所以接下来呢我们通过这两个图
0:05:56.36 就可以做出如下的结论了啊
0:05:58.83 也就是说我们http协议跟web socket协议
0:06:02.47 具体他们有哪些不一样的地方
0:06:04.42 他们的一个对比
0:06:05.57 首先第一个基于http这种协议创建的连接呢
0:06:09.48 是这种短连接
0:06:10.64 而基于我们这个web socket创建的连接呢
0:06:13.64 是这种长连接
0:06:14.77 然后接下来是什么呢
0:06:16.10 就是我们这个http的通信呢是单向的
0:06:19.44 那么它是基于这种请求响应模式
0:06:22.08 也就是它这个方向一定是什么呢
0:06:24.75 客户端浏览器是不是主动发请求
0:06:27.39 然后这个服务器是不是才能接收请求
0:06:30.04 来给它响应啊
0:06:31.14 那么它这个是单向的
0:06:32.74 而这个web socket呢它是双向的
0:06:35.62 哎你看它是支持双向通信
0:06:37.75 那除了这些不同的地方之外呢
0:06:39.79 他俩其实也有一个是相同的
0:06:41.58 是什么呢
0:06:42.25 就是他们底层啊其实都是基于这种tcp连接
0:06:46.33 那么通过这个对比呢
0:06:47.89 咱们呢其实就已经了解了web socket
0:06:50.36 这种新的网络协议
0:06:51.86 它的特点
0:06:52.61 那接下来呢我们就需要来说明一下
0:06:54.87 那这个web socket它具体有什么样的应用场景呢
0:06:57.81 那么我们在项目当中会不会使用到它呢
0:07:00.13 哎那接下来呢咱们就简单来了解一下web socket
0:07:03.43 它常见的几个应用场景
0:07:05.29 那这几个场景呢其实都是比较常见的
0:07:07.77 首先第一个呢叫做视频弹幕
0:07:10.22 哎你看就是这种效果
0:07:11.75 咱们是不是经常在网上看一些视频的时候
0:07:14.67 会有弹幕啊
0:07:15.66 那么你会发现我们这个页面并没有刷新
0:07:18.47 而这些弹幕呢
0:07:19.73 随时是不是都会出现在我们这个浏览器页面上
0:07:22.62 那这个弹幕是怎么上来的呢
0:07:24.48 实际上我们通过web socket
0:07:26.27 就可以主动把这个信息给他
0:07:28.50 推送到我们这个浏览器上面来
0:07:30.78 然后第二个场景是什么呢
0:07:32.46 就是网页聊天
0:07:33.89 比如说我们经常上一些网站
0:07:36.06 然后呢
0:07:36.54 这些网站呢是不是会有这么一个小的聊天窗口
0:07:39.36 啊
0:07:39.62 对吧
0:07:40.13 那么我们通过这个聊天窗口呢
0:07:41.94 是不是可以跟客服进行聊天啊
0:07:44.07 那么我们直观看到的效果是什么呢
0:07:46.24 哎就是我们在这个地方
0:07:47.50 是不是输入某个文字之后
0:07:49.12 一点击发送
0:07:50.25 那么这个数据呢是不是就发送到对方那边去了
0:07:53.19 那么同理
0:07:54.16 对方是不是说了什么话
0:07:55.48 是不是也会及时推送到我们这个
0:07:57.51 小的窗口里边了
0:07:58.50 而这个聊天的过程呢
0:08:00.12 它其实就是web socket最典型的一个应用场景
0:08:03.67 说白了就是什么呢
0:08:04.81 它其实是通过服务器把我们这个消息
0:08:07.62 主动推送到我们这个网页上的
0:08:10.00 哎这是网页聊天
0:08:11.68 然后还有什么场景呢
0:08:13.12 咱们再来看一下哎
0:08:14.19 就是体育实况更新
0:08:16.03 也就是我们去看一些体育赛事的时候啊
0:08:18.74 往往他有这种比分直播对吧
0:08:20.77 你像技术统计哪个人得了多少分了
0:08:23.30 上涨时间是多少
0:08:24.50 抢了几个篮板等等
0:08:25.75 那么这些数据呢它会实时更新
0:08:28.15 并且呢我们看到的效果是什么呢
0:08:30.22 这个页面它其实并没有刷新
0:08:32.39 但是这个数据呢它是不是会实时去更新
0:08:34.86 那这个数据是怎么展示出来的呢
0:08:36.77 唉其实通过web socket
0:08:38.50 就可以主动的把这个消息给他
0:08:40.37 推送到这个网页上面来进行展示好
0:08:43.21 这是第三个应用场景
0:08:45.00 然后还有最后一个应用场景啊
0:08:46.95 就是一些股票基金的网站
0:08:48.87 它会实时的去更新
0:08:50.54 那么更新各种报价
0:08:51.89 哎你像这个上证指数对吧
0:08:54.05 还有每一个板块
0:08:55.25 那么当前它的涨跌幅等等这些
0:08:57.55 那么这些数据呢它其实都是实时更新的
0:09:00.66 并且咱们看到的现象是什么呢
0:09:02.67 这个页面它是不是也没有去刷新
0:09:04.65 但是这个数据它是不是一直在变化
0:09:06.76 实际上呢我们就可以通过web socket
0:09:09.11 把这些数据实时的给他推送到这个页面上面
0:09:12.04 来进行展示
0:09:13.00 哎
0:09:13.25 也就是说并不需要我们这个页面发请求
0:09:16.24 去获取数据
0:09:17.13 而是服务器主动给我们推上来的数据哎
0:09:20.66 就是这么几个场景啊
0:09:22.08 为了能让大家感受的更直观一点呢
Day10-08~09
- WebSocket_入门案例_1、2
Day10-10~12
- 来单提醒_需求分析和设计、代码开发、测试
websocket请求经过nginx进行了转发,已经提前在nginx里面配置好这个路径。
但是,弹幕:从请求的URL地址上来看,小程序的请求不是反向代理,是直接请求的服务器。
bym:确实,nginx里配置的是http://开头,而F12看到的请求是ws://开头。
Day10-13~15
- 客户催单_需求分析和设计、代码开发、测试