zoukankan      html  css  js  c++  java
  • 前端 二维码弹出框扫码 websocket 长连接思路

    ----只提供相关思路----

    1.在 window.sessionStorage 中存储三个标志位

    token:当前用户的token

    status:当前弹出框的websocket连接状态

    totalStatus:系统的websocket总体连接状态

    注:使用session是因为浏览器关闭后websocket会清掉,同是websocket的标志位相关session也会清掉

    2.心跳检测,定时器,rxjs

    3.用户操作需要区分三种情况

    ①用户初次登录,尚未建立websocket连接  :this.webSocket = new WebSocket(this.url);

    websocket连接建立,当前二维码弹出框处于关闭状态 等待再次打开:进行心跳检测

    websocket连接建立,当前二维码弹出框处于开启状态 : 连接上之前的websocket连接

    4.websocket的状态判断

    saveSessionStotage(token, status: ’success’|’error, totalStatus: ‘open’|’closed’){

    window.sessionStorage.setItem(‘websocket’,JSON.stringify({token:token,status:status,totalStatus:totalStatus}))

    }

    ① this.webSocket.onopen : 

    this.saveStotage(token,’success’,’open’)

    ② this.webSocket.onmessage :

    this.saveStotage(token,’success’,’open’)

    ③ this.webSocket.onclose :

    this.saveStotage(token,’error’,’open’)  // 对于后台关闭的连接要继续心跳检测

    ④ this.webSocket.onerror :

    this.saveStotage(token,’error’,’closed’)

    ⑤心跳检测的相关操作也需要按情况更新

    5.用户账号密码登录时无须建立websocket连接,当业务内进行操作打开二维码弹出框后再建立websocket连接,用户退出系统后必须要销毁websocket连接

    6.可能存在打开了二维码弹出框,但是并没有扫码而是直接关闭弹出框的再次打开的情况

    主要注意心跳检测的定时器,需要清理,否则会存在多个定时器一直发送消息

  • 相关阅读:
    现在分词做状语,到,非谓语动词
    成功和失败因素收集
    退拽原理2
    分享到(事件冒泡实例)
    滚动公告(纵向)
    RabbitMQ消息队列(一): Detailed Introduction 详细介绍
    在IDEA中实战Git
    深入浅出JMS(三)--ActiveMQ简单的HelloWorld实例
    MySQL中日期和时间戳互相转换的函数和方法
    【Docker】 windows10 docker 使用
  • 原文地址:https://www.cnblogs.com/lskzj/p/12173135.html
Copyright © 2011-2022 走看看