• 苍穹外卖(八) 使用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:

     

    演示

    用户进行催单

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

     

    查看催单提醒

  • 相关阅读:
    DQL查询数据库
    基于Java+SpringBoot+Vue前后端分离家政服务管理系统的设计与实现【Java毕业设计·文档报告·代码讲解·安装调试】
    PCA算法(python版本)
    OSPF——基本概念2(多区域与Vlink)
    C++ 学习 之 成员指针
    以UVTR代码为例学习基于MMDetection3D库相关代码的阅读方法
    如何对研发团队绩效进行考核?【附各环节人员考核参考表】
    PS学习笔记——视图调整
    Java自学注意细节快速成长
    bs4获取图片
  • 原文地址:https://blog.csdn.net/weixin_47786582/article/details/133847703