You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

75 lines
2.0 KiB
JavaScript

var ws_addr = 'wss://'+window.location.host+"/sandbox/pipe",
sock = null,
//shell = document.getElementById("shell"),
authors = document.getElementById("authors"),
title = document.getElementById("title"),
connections = document.getElementById("connections");
var delay = 10 * 1000;
function showtitle(t) {
setTimeout(function () {
title.innerHTML = t;
}, delay);
}
function showauthors(a) {
setTimeout(function () {
authors.innerHTML = a;
}, delay);
}
function connect () {
sock = new WebSocket(ws_addr);
sock.onopen = function (event) {
console.log("socket opened");
document.body.classList.add("connected");
// sock.send(JSON.stringify({
// src: "connect",
// }));
};
sock.onmessage = function (event) {
// console.log("message", event);
if (typeof(event.data) == "string") {
var msg = JSON.parse(event.data);
// console.log("message JSON", msg);
if (msg.src == "stdin" && msg.line) {
// use a regular expression to parse the line
var m = msg.line.match(/^meta:(.*?):(.*)$/);
if (m) {
console.log("m", m[1], m[2]);
if (m[1] == "title") {
showtitle(m[2]);
}
if (m[1] == "authors"){
showauthors(m[2]);
}
} else {
//console.log("bad line", msg.line)
}
/*
// Show all lines
var line = document.createElement("div");
line.classList.add("line");
line.innerHTML = msg.line;
shell.appendChild(line);
// scroll to bottom
shell.scrollTop = shell.scrollHeight;
*/
} else if (msg.src == "connect") {
connections.innerHTML = msg.connections;
}
}
};
sock.onclose = function (event) {
// console.log("socket closed");
connections.innerHTML = "?";
document.body.classList.remove("connected");
sock = null;
window.setTimeout(connect, 2500);
}
}
connect();