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)
}
相关推荐
用户13060956072318 分钟前
elpis里程碑一的阶段性总结
前端
砍材农夫19 分钟前
物联网 基于netty控制报文结构(发布与接收)
java·开发语言·前端·javascript·物联网
光影少年19 分钟前
react的Context 跨层传值、优缺点、适用场景
前端·react.js·掘金·金石计划
kevinten1022 分钟前
说实话,我做了个"不务正业"的 AI:专门推荐冷门冒险地
前端
上单带刀不带妹24 分钟前
Vue3 中 getCurrentInstance() 与 proxy 详解
前端·javascript·vue.js
Csvn29 分钟前
前端 AI 应用:让浏览器运行机器学习模型
前端
妄念鹿1 小时前
记一次Uniapp的input输入框type为number时还能输入非数字
前端·javascript
ricardo19731 小时前
浏览器渲染流水线:从 HTML 到屏幕上的像素
前端·面试
明月_清风1 小时前
2026 前端生存指南:8 个正在重塑你职业生涯的技术趋势
前端·ai编程
ZTStory1 小时前
Volta 新一代 node 版本管理工具
前端·javascript·node.js