当前位置: 首页 > news >正文

苍穹外卖(八) 使用WebSocket协议完成来单提醒及客户催单功能

WebSocket介绍

WebSocket 是基于 TCP 的一种新的网络协议。它实现了浏览器与服务器全双工通信(双向传输)——浏览器和服务器只需要完成一次握手,两者之间就可以创建持久性的连接, 并进行双向数据传输。

HTTP协议和WebSocket协议对比:

  • HTTP是短连接
  • WebSocket是长连接
  • HTTP通信是单向的,基于请求响应模式
  • WebSocket支持双向通信
  • HTTP和WebSocket底层都是TCP连接

 

思考:既然WebSocket支持双向通信,功能看似比HTTP强大,那么我们是不是可以基于WebSocket开发所有的业务功能?

WebSocket缺点:

服务器长期维护长连接需要一定的成本 各个浏览器支持程度不一 WebSocket 是长连接,受网络限制比较大,需要处理好重连

结论:WebSocket并不能完全取代HTTP,它只适合在特定的场景下使用

WebSocket应用场景:

1). 视频弹幕

2). 网页聊天  (最典型)

3). 体育实况更新 

 

来单提醒

需求分析和设计

用户下单并且支付成功后,需要第一时间通知外卖商家。通知的形式有如下两种:

  • 语音播报 
  • 弹出提示框

 

设计思路:

  • 通过WebSocket实现管理端浏览器和服务端保持长连接状态
  • 当客户支付后,调用WebSocket的相关API实现服务端向管理端浏览器推送消息
  • 管理端浏览器解析服务端推送的消息,判断是来单提醒还是客户催单,进行相应的消息提示和语音播报
  • 约定服务端发送给管理端浏览器的数据格式为JSON,字段包括:type,orderId,content
    • type 为消息类型,1为来单提醒 2为客户催单
    • orderId 为订单id
    • content 为消息内容

 代码开发 

在OrderServiceImpl中注入WebSocketServer对象,修改paySuccess方法,加入如下代码: 

 当商家管理端浏览器接收到这个消息, 就是前端代码负责的了

客户催单

需求分析和设计 

用户在小程序中点击催单按钮后,需要第一时间通知外卖商家。通知的形式有如下两种:

  • 语音播报 
  • 弹出提示框

 

设计思路:

  • 通过WebSocket实现管理端页面和服务端保持长连接状态
  • 当用户点击催单按钮后,调用WebSocket的相关API实现服务端向管理端推送消息
  • 管理端浏览器解析服务端推送的消息,判断是来单提醒还是客户催单,进行相应的消息提示和语音播报
  • 约定服务端发送给管理端浏览器的数据格式为JSON,字段包括:type,orderId,content
    • type 为消息类型,1为来单提醒 2为客户催单
    • orderId 为订单id
    • content 为消息内容

当用户点击催单按钮时,向服务端发送请求。

代码开发

Controller层

根据用户催单的接口定义,在user/OrderController中创建催单方法:

 

Service层实现类

在OrderServiceImpl中实现reminder方法:

Mapper层

在OrderMapper中添加getById:

 

演示

用户进行催单

用户可在订单列表或者订单详情,进行催单

 

查看催单提醒

http://www.lryc.cn/news/193881.html

相关文章:

  • 网站如何应对网络流量攻击
  • 设置Json序列化时字段的顺序
  • AcWing5277. 三元组
  • 【LeetCode热题100】--121.买卖股票的最佳时机
  • 高精度计算
  • KMP 算法 + 详细笔记
  • 基于主动移频法与AFD孤岛检测的单相并网逆变器matlab仿真
  • MIT 6.S081 Operating System/Fall 2020 macOS搭建risc-v与xv6开发调试环境
  • JMeter定时器
  • zookeeper应用场景(二)
  • Android webView加载高德地图定位不显示问题
  • 94. 二叉树的中序遍历(递归+迭代)
  • UGUI交互组件Slider
  • JAVA经典百题之按位或运算符 `|的使用
  • C多线程编程- 近似求解π
  • YOLOV7量化第二步: 模型标定
  • 前端-uniapp-开发指南
  • Java集合类ArrayList的应用-杨辉三角的前n行
  • C语言-函数
  • 蓝桥杯 枚举算法 (c++)
  • Wordpress自定义小工具logo调用设置(可视化)
  • 面试常考数据结构:红黑树、B树、B+树各自适用的场景
  • Paddle GPU版本需要安装CUDA、CUDNN
  • MYSQL length函数
  • uniapp 在android手机上运行tab栏页面跳转问题
  • css3 hover效果
  • C语言char与short取反以及符号判断问题
  • Gpt-4多模态功能强势上线,景联文科技多模态数据采集标注服务等您来体验!
  • 【idea】 java: 找不到符号
  • Flink测试利器之DataGen初探 | 京东云技术团队