使用洛谷私信的时候常常不能在线聊天, 因为消息没有提醒功能, 这里实现了一个收到消息产生系统通知的功能, 打开私信页面, 将一下代码复制到控制台并回车运行即可.
注意需要允许通知权限.
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}`);
}
}