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)
}
相关推荐
用户0595401744612 分钟前
AI Agent 上下文污染踩坑实录:用 pytest + Redis 揪出 3 类记忆串号 bug,排查 6 小时
前端·css
满栀58522 分钟前
状态管理:Redux、Vuex、Pinia 核心区别
前端·javascript·typescript
一拳不是超人1 小时前
DeepSeek Harness 为什么敢说"一切皆插件"?拆透 Cordis 引擎的五大核心机制
前端·人工智能·agent
IT_陈寒1 小时前
Python的GIL让我多写了500行代码
前端·人工智能·后端
风骏时光牛马1 小时前
AI智能体能力调度微服务
前端
AI领路人.2 小时前
[特殊字符] 用 OpenClaw 实现一个 C++ 复刻版 QuantClaw
websocket·单元测试·discord·rest api·内存占用·c++17
大龄码农有梦想2 小时前
Vue + BPMN.js + Camunda:搭建企业级流程设计器完整实践
javascript·vue.js·流程设计器·bpmn.js·bpmn·流程审批·工作流设计器
Eloudy3 小时前
ReAct 原理简介
前端·javascript·人工智能·react.js·agent·gpu
ZJU_统一阿萨姆4 小时前
【DSH】如何将 DeepSeek Harness 嵌入生产环境?万字解构 DeepSeek Agent Harness 的运行机制与安全边界
前端·javascript·安全
用户921080262864 小时前
4. 前端地图大量点位实时更新优化:后端推增量,前端做 diff
前端