前言:
昨天晚上跑完步回来宿舍都快停电了,就没写项目日记,今天补上
目录
前言:
今日完结任务:
今日收获:
引入百度地图接口:
引入spring task ,定时处理异常订单:
引入websocket实现用户端催单和商家端的来单提醒:
杂项知识点:
总结:
今日完结任务:
- 对用户订单进行优化,引入了百度地图接口,增加了配送范围的判断
- 引入了spring task ,定时处理异常订单(异常未付款和异常未派送)
- 引入了websocket,实现了用户端的催单功能和商家端的来单提醒功能
今日收获:
引入百度地图接口:
这个功能的思想很简单,就是提前存储商家位置,百度地图接口会根据该地址得到准确的经纬度,之后在用户点单的时候,再得到用户提供地址的经纬度,进行计算,判断距离是否超过限定值,如果超过则在后端抛出地址异常。这个唯一的缺点就是前端并没有给出相对应接收后端消息的代码,因此异常只会在后端被抛出,前端会卡顿
引入spring task ,定时处理异常订单:
这个功能确实很实用和常见,我们在日常生活中也经常遇见:CSDN的每周小结。这就是通过定时任务做的,而这个依赖很小,小到连自己的实体都没有,它属于是spring context中的一个附属依赖
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>版本号</version>
</dependency>
而设置定时任务的基本代码设计很简单
设置定时
----------------------------------------------------
代码体
我们使用@Scheduled来设置定时,在括号里我们采用的是cron表达式,他从左到右分别为:秒 分 时 天 周 月
而我们也不需要独立掌握cron表达式的书写,这种东西网上一大堆的转换器,这里我随便贴一个
在线Cron表达式生成器 (qqe2.com)
引入定时任务使得我们后端可以自动对异常订单进行处理,简化了我们的操作。但是需要注意定时任务虽然很好用,但是在设置定时的时候,还是不要太频繁,因为我们这里的定时任务中包括了对数据库的查询,就好比我贴出来的代码,他对用户超过15分钟的未付款超时订单进行处理,如果我们设置一秒一次,虽然可以,但是大量查询数据库会造成性能问题,因此定时任务的核心在于:如何高效率的设置任务。
此外使用定时任务还需要在代码入口使用@EnableScheduling来开启spring task
引入websocket实现用户端催单和商家端的来单提醒:
websocket本质上和我们之前介绍的http一样,本质上还是一种通信协议,他和http的区别主要在于:websocket使得服务端有了能力向客户端推送数据。在我们http协议中,采用的是请求-响应的模式。
HTTP介绍:一文了解什么是HTTP_我是一盘牛肉的博客-CSDN博客
关于websocket的详细介绍我们放到杂项知识点中,现在我们先只谈它在本项目中的使用
应用场景为:当用户端下单之后,服务端需要接收消息返回给商家端,当用户催单的时候,也是如此
这里的核心问题就在于:如何使得服务端可以返回消息给前端。
其实我们可以发现:像这种后端发送数据的技术,我们之前还学过HttpCline这项技术
HttpClient广泛用于客户端与服务器之间的请求-响应通信,通常使用在HTTP API的调用、数据获取等场景。WebSocket适用于实时应用程序,如聊天应用、实时数据监控、多人协同编辑等场景,它可以实现实时双向通信。
并且httpCline是无状态协议,如果使用它来向前端返送数据,就要不断的连接-断开-连接。而websocket是长连接,这样就大大提高了效率。
这里简单的展示了用户下单之后利用websocket来对商家端进行提醒。
而他也需要一个注册类来注册一个websocket
并且需要我们前端设置接收器来接收后端发送的json类型的数据。
结果展示:
并且附带语音提示。
我没有写过聊天室,但是我感觉是否用户与商家的聊天也是这个思路,基于websocket,用户发送消息到服务器,服务器再使用websocket来转发给商家,商家给用户发送消息也是同样操作。
杂项知识点:
1.什么是websocket:
WebSocket是一种在客户端和服务器之间实现全双工通信的协议。它通过在客户端和服务器之间建立一个长久的连接,并且允许客户端和服务器之间实时地进行双向通信。
与传统的HTTP请求-响应模式不同,WebSocket允许服务器主动向客户端推送数据,而不需要客户端发送请求。这种实时通信的特性使得WebSocket在实时应用程序和实时数据传输方面非常有用。
WebSocket协议通过HTTP协议进行初始握手过程,然后转换为WebSocket连接。它使用了自定义的二进制或文本消息格式,可以在连接建立后直接发送和接收消息。通常使用ws://或wss://作为WebSocket连接的URL前缀。
WebSocket的优势包括:
-
实时性:WebSocket提供了实时双向通信的能力,允许服务器主动向客户端推送数据,实现实时的消息传输和更新。
-
效率和性能:WebSocket协议相比于HTTP请求,具有更低的开销和更高的性能,因为它避免了重复的请求头和无效的响应。
-
跨域支持:WebSocket能够轻松处理跨域请求,因为它是一种单一源的通信协议,主要受到服务器的限制。
-
广泛的浏览器支持:现代浏览器几乎都支持WebSocket协议,并且提供了一些用于创建WebSocket连接和处理消息的JavaScript API。
WebSocket在各种领域都有广泛的应用,包括在线聊天、实时数据监控、多人游戏、协同编辑等。它为开发
总结:
今天的收获还算不错,学习了spring task和 websocket这两个比较常用的知识点。
如果我的内容对你有帮助,请点赞,评论,收藏。创作不易,大家的支持就是我坚持下去的动力!