42 lines
777 B
JavaScript
42 lines
777 B
JavaScript
let ws = new WebSocket("ws://127.0.0.1:4000");
|
|
ws.onopen = () => {
|
|
console.log('websocket opened');
|
|
}
|
|
|
|
ws.onclose = () => {
|
|
console.log('websocket closed');
|
|
}
|
|
|
|
ws.onmessage = (e) => {
|
|
console.log('recv:', e.data)
|
|
}
|
|
|
|
let timeout = 0;
|
|
let timer = null;
|
|
|
|
/**
|
|
* 发送消息到 Emacs
|
|
* @param {string} msg 消息内容
|
|
*/
|
|
function sendMsgToEmacs(msg) {
|
|
if (!(ws instanceof WebSocket) || ws.readyState !== WebSocket.OPEN) return;
|
|
|
|
ws.send(msg);
|
|
}
|
|
|
|
const range = 10;
|
|
|
|
function calcNextTimeout() {
|
|
return (Math.round(Math.random() * range) + 2) * 1000;
|
|
}
|
|
|
|
function schedule() {
|
|
sendMsgToEmacs(window.crypto.randomUUID());
|
|
window.clearTimeout(timer);
|
|
timeout = calcNextTimeout();
|
|
|
|
timer = window.setTimeout(schedule, timeout);
|
|
}
|
|
|
|
schedule();
|