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

html全局遮罩,通过websocket来实现实时发布公告

1.index.html代码示例
在这里插入图片描述

<div id="websocket" style="display:none;position: absolute;color:red;background-color: black;
  width: 100%;height: 100%;z-index: 100; opacity: 0.9; padding-top: 30%;padding-left: 30%; padding-border:1px; "
  onclick="closeDiv()">
  </div>

2.index.html的js代码示例
在这里插入图片描述

<script>
    // 创建一个WebSocket连接
    const socket = new WebSocket("ws://"+window.location.host+':48080/infra/ws?token='+window.localStorage.getItem('refreshToken'));
    var content = "";
    // 监听连接打开事件
    socket.addEventListener('open', (event) => {
        document.getElementById('websocket').style.display = 'none';
        console.log('WebSocket is open now.');
    });
    function closeDiv() {
        document.getElementById('websocket').style.display = 'none';
    }

    // 监听消息事件
    socket.addEventListener('message', (event) => {
        // this.content = JSON.parse(JSON.parse(event.data).content).text;
        this.content = JSON.parse(JSON.parse(event.data).content).content;
        document.getElementById('websocket').innerHTML = this.content;
        document.getElementById('websocket').style.display = 'block';
        console.log('Message from server: ', event.data);
    });

    // 监听错误事件
    socket.addEventListener('error', (error) => {
        console.error('WebSocket encountered error: ', error);
    });

    // 监听连接关闭事件
    socket.addEventListener('close', (event) => {
        console.log('WebSocket is closed now.');
    });
</script>

3.websocket需要token来连接,所以需要实时获取最新token
在这里插入图片描述

// 获取token
export const getAccessToken = () => {
  window.localStorage.setItem('refreshToken', wsCache.get(AccessTokenKey) ? wsCache.get(AccessTokenKey) : wsCache.get('ACCESS_TOKEN'))
  return wsCache.get(AccessTokenKey) ? wsCache.get(AccessTokenKey) : wsCache.get('ACCESS_TOKEN')
}

// 刷新token
export const getRefreshToken = () => {
  window.localStorage.setItem('refreshToken', wsCache.get(RefreshTokenKey))
  return wsCache.get(RefreshTokenKey)
}

http://www.kler.cn/a/509125.html

相关文章:

  • 【实践】操作系统智能助手OS Copilot新功能测评
  • SpringBoot错误码国际化
  • QT笔记- Qt6.8.1 Android编程 添加AndroidManifest.xml文件以支持修改权限
  • DPIN与CESS Network达成全球战略合作,推动DePIN与AI领域创新突破
  • 如何使用Ultralytics训练自己的yolo5 yolo8 yolo10 yolo11等目标检测模型
  • 简明docker快速入门并实践方法
  • InVideo AI技术浅析(二):自然语言处理
  • Ansible实战:如何正确选择 command 和shell模块?
  • Next.js 与 React.js 的对比分析
  • cmake构建问题汇总
  • STL容器-- list的模拟实现(附源码)
  • 51c自动驾驶~合集47
  • AUTOSAR从入门到精通-【自动驾驶】高精地图(四)
  • 工业网口相机:如何通过调整网口参数设置,优化图像传输和网络性能,达到最大帧率
  • 金融项目实战 07|Python实现接口自动化——连接数据库和数据清洗、测试报告、持续集成
  • Java 数组排序
  • java图像文件的显示
  • 海康工业相机的应用部署不是简简单单!?
  • 【王树森推荐系统】排序03:预估分数融合 排序04:视频播放建模
  • 使用 electron-builder 构建一个 Electron 应用程序
  • ComfyUI-PromptOptimizer:文生图提示优化节点
  • 网络编程 - - TCP套接字通信及编程实现
  • 配置web服务端对https进行抓包
  • Python学习指南:从零到进阶的系统流程
  • UllnnovationHub,一个开源的WPF控件库
  • AI 音频工具合集