收到私信立即提醒工具
  • 板块灌水区
  • 楼主__OwO__
  • 当前回复15
  • 已保存回复15
  • 发布时间2021/11/10 08:15
  • 上次更新2023/11/4 00:59:37
查看原帖
收到私信立即提醒工具
237496
__OwO__楼主2021/11/10 08:15

使用洛谷私信的时候常常不能在线聊天, 因为消息没有提醒功能, 这里实现了一个收到消息产生系统通知的功能, 打开私信页面, 将一下代码复制到控制台并回车运行即可.

注意需要允许通知权限.

let ws = new WebSocket("wss://ws.luogu.com.cn/ws");
Notification.requestPermission();
function showNotice(msg) {
    function  newNotify() {
        let notification = new Notification("新的私信", {
            dir: "auto",
            lang: "hi",
            requireInteraction: true,
            icon: "https://www.luogu.com.cn/favicon.ico",
            body: msg
        });
        notification.onclick = () => { 
            window.focus();
        }
    }
    //权限判断
    if (Notification.permission == "granted") {
        newNotify();
    } else {
        //请求权限
        Notification.requestPermission(function (perm) {
            if (perm == "granted") {
                newNotify();
            }
        })
    }
}
ws.onopen = () => {
    ws.send(`{"type":"join_channel","channel":"chat","channel_param":"${window._feInjection.currentUser.uid}","exclusive_key":null}`);
}
ws.onmessage = (e) => {
    let u = JSON.parse(e.data);
    console.log(u);
    if (u._ws_type === 'server_broadcast' && u.message instanceof Object && u.message.sender.uid !== window._feInjection.currentUser.uid) {
        showNotice(`${u.message.sender.name} : ${u.message.content}`);
    }
}
2021/11/10 08:15
加载中...