white + isolate the js

This commit is contained in:
Juraj Kubrican
2025-02-18 14:11:19 +01:00
parent 974846d55e
commit 0505964854

View File

@@ -1,91 +1,85 @@
const canvas = document.getElementById("drawCanvas"); (() => {
const ctx = canvas.getContext("2d"); const canvas = document.getElementById("drawCanvas");
const ctx = canvas.getContext("2d");
ctx.lineWidth = 2; ctx.lineWidth = 2;
ctx.lineCap = "round"; ctx.lineCap = "round";
ctx.strokeStyle = "white"; ctx.strokeStyle = "white";
let drawing = false; let drawing = false;
let lineId = 0; let lineId = 0;
const drawSocketUrl = const socketUrl =
(window.location.protocol.startsWith("https") ? "wss://" : "ws://") + (window.location.protocol.startsWith("https") ? "wss://" : "ws://") +
window.location.host + window.location.host +
"/draw/ws"; "/draw/ws";
let drawSocket = new WebSocket(drawSocketUrl); let socket = new WebSocket(socketUrl);
drawSocket.onerror = (e) => { socket.onerror = console.error;
console.log("error", e); socket.onclose = console.warn;
};
drawSocket.onclose = (e) => {
console.log("closed", e);
};
setTimeout(() => { setTimeout(() => socket.send("ping"), 200);
drawSocket.send("ping");
}, 200);
const sendMessage = (id, x, y) => { // const queue = []
if (drawSocket.readyState !== drawSocket.OPEN) {
drawSocket = new WebSocket(drawSocketUrl); const sendMessage = (id, x, y) => {
// queue.push(`${id},${x},${y}`)
// console.log(queue)
if (socket.readyState !== socket.OPEN) {
socket = new WebSocket(socketUrl);
} }
drawSocket.send(id + "," + x + "," + y); socket.send(id + "," + x + "," + y);
}; };
const drawStart = () => { const drawStart = () => {
ctx.beginPath(); ctx.beginPath();
lineId++; lineId++;
drawing = true; drawing = true;
}; };
const drawStop = () => { const drawStop = () => {
drawing = false; drawing = false;
ctx.closePath(); ctx.closePath();
}; };
const drawMove = (e) => { const drawMove = (e) => {
if (!drawing) return; if (!drawing) return;
ctx.lineTo(e.offsetX, e.offsetY); ctx.lineTo(e.offsetX, e.offsetY);
sendMessage(lineId, e.offsetX, e.offsetY); sendMessage(lineId, e.offsetX, e.offsetY);
ctx.stroke(); ctx.stroke();
};
function touchStart(event) {
console.log("start");
drawStart(event.touches[0]);
}
function touchMove(event) {
console.log("move", event.touches[0]);
const e = {
offsetX: event.touches[0].clientX - canvas.offsetLeft,
offsetY: event.touches[0].clientY - canvas.offsetTop,
}; };
drawMove(e);
event.preventDefault();
}
function touchEnd(event) {
console.log("end");
drawStop(event.changedTouches[0]);
}
canvas.addEventListener("mousedown", drawStart); const touchStart = (e) => drawStart(e.touches[0]);
canvas.addEventListener("mouseup", drawStop); const touchMove = (e) => {
canvas.addEventListener("mousemove", drawMove); drawMove({
offsetX: e.touches[0].clientX - canvas.offsetLeft,
offsetY: e.touches[0].clientY - canvas.offsetTop,
});
e.preventDefault();
};
const touchEnd = (e) => drawStop(e.changedTouches[0]);
canvas.addEventListener("touchstart", touchStart, false); canvas.addEventListener("mousedown", drawStart);
canvas.addEventListener("touchend", touchEnd, false); canvas.addEventListener("mouseup", drawStop);
canvas.addEventListener("touchmove", touchMove, false); canvas.addEventListener("mousemove", drawMove);
const receiveCanvas = document.getElementById("receiveCanvas"); canvas.addEventListener("touchstart", touchStart);
const recCtx = receiveCanvas.getContext("2d"); canvas.addEventListener("touchend", touchEnd);
recCtx.lineWidth = 2; canvas.addEventListener("touchmove", touchMove);
recCtx.lineCap = "round";
let receiveLineId = 0; const receiveCanvas = document.getElementById("receiveCanvas");
const recCtx = receiveCanvas.getContext("2d");
recCtx.lineWidth = 2;
recCtx.lineCap = "round";
recCtx.strokeStyle = "white";
drawSocket.addEventListener("message", function (event) { let receiveLineId = 0;
socket.addEventListener("message", function (event) {
const parts = event.data.split(","); const parts = event.data.split(",");
if (parts[0] != receiveLineId) { if (parts[0] != receiveLineId) {
recCtx.closePath(); recCtx.closePath();
@@ -96,11 +90,12 @@ drawSocket.addEventListener("message", function (event) {
recCtx.lineTo(parts[1], parts[2]); recCtx.lineTo(parts[1], parts[2]);
recCtx.stroke(); recCtx.stroke();
} }
}); });
setInterval(() => { setInterval(() => {
if (drawSocket.readyState !== drawSocket.OPEN) { if (socket.readyState !== socket.OPEN) {
drawSocket = new WebSocket(drawSocketUrl); socket = new WebSocket(socketUrl);
} }
drawSocket.send("ping"); socket.send("ping");
}, 10000); }, 10000);
})();