$(function () { let main = $(".thread + hr + .pagination + hr"); main.after( '

' ); $("#live-indicator").css("background-color", "orange"); $("#live-status").text("Připojování..."); let thread = window.location.pathname.split("/").slice(-2); let protocol; if (window.location.protocol === "https:") { protocol = "wss:"; } else { protocol = "ws:"; } let last_post = $(".thread").find(".post").last().attr("id"); let ws_location = `${protocol}//${window.location.host}/live/${thread[0]}/${thread[1]}/${last_post}`; let ws = new WebSocket(ws_location); let interval; ws.addEventListener("open", function (_) { $("#live-indicator").css("background-color", "lime"); $("#live-status").text("Připojeno pro nové příspěvky"); interval = setInterval(function () { ws.send('{"type":"ping"}'); }, 10000); }); ws.addEventListener("message", function (msg) { let data = JSON.parse(msg.data); switch (data.type) { case "created": $(".thread").append(data.html + "
"); $(window).trigger({ type: "setup_post_events", id: data.id, }); break; case "updated": $(`#${data.id}`).replaceWith(data.html); $(window).trigger({ type: "setup_post_events", id: data.id, }); break; case "removed": $(`#${data.id}`).next("br").remove(); $(`#${data.id}`).remove(); break; case "thread_removed": setTimeout(function () { $("#live-indicator").css("background-color", "red"); $("#live-status").text("Vlákno bylo odstraněno"); }, 100); break; default: break; } }); ws.addEventListener("close", function (_) { $("#live-indicator").css("background-color", "red"); $("#live-status").text("Odpojeno, obnov stránku"); clearInterval(interval); }); });