// TODO: better logic that doesn't poll all the time sclass JSSendMouseEventsToWebSocket { int interval = 100; // 0 for continuous bool verbose; S html() { ret hjs(js()); } S js() { if (interval == 0) ret [[ var mouseVerbose = $verbose; var mouseX = -1, mouseY = -1; function wsSendMouse() { if (wsReady) { var msg = JSON.stringify({"mouse": [mouseX, mouseY]}); if (mouseVerbose) console.log(msg); ws.send(msg); } } $("body").mousemove(function(e) { mouseX = e.pageX; mouseY = e.pageY; wsSendMouse(); }); ]]; ret replaceDollarVars([[ var mouseInterval = $interval; var mouseX = -1, mouseY = -1; $("body").mousemove(function(e) { mouseX = e.pageX; mouseY = e.pageY; }); function wsSendMouse() { if (wsReady) ws.send(JSON.stringify({"mouse": [mouseX, mouseY]})); } setTimeout(function sendMouse, mouseInterval); ]], +interval, +verbose); } }