aboutsummaryrefslogtreecommitdiff
path: root/src/main.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.ts')
-rw-r--r--src/main.ts66
1 files changed, 62 insertions, 4 deletions
diff --git a/src/main.ts b/src/main.ts
index e0f768d..c6ec627 100644
--- a/src/main.ts
+++ b/src/main.ts
@@ -22,6 +22,7 @@ const messages = new Map<number, Message>();
const users = new Map<number, User>();
let sent = false;
const host = location.protocol + "//" + location.host;
+let socket: WebSocket;
function xhttp_request(location: string): Promise<any> {
@@ -462,16 +463,73 @@ function getelementbyid(s: string): any {
}
}
+function togglerightpane(): void {
+ let window = getelementbyid("rightpane");
+ if (window.style.display != "flex") {
+ window.style.display = "flex"
+ } else {
+ window.style.display = ""
+ }
+}
+function toggleleftpane(): void {
+ let window = getelementbyid("leftpane");
+ if (window.style.display != "none") {
+ window.style.display = "none"
+ } else {
+ window.style.display = ""
+ }
+}
+
+function sleep(ms) {
+ return new Promise(resolve => setTimeout(resolve, ms));
+}
+
+async function ws_connect(t: number): Promise<WebSocket> {
+ await sleep(t * 1000);
+
+ return new WebSocket('ws://localhost:8001')
+}
+
+function ws_setup(t: number = 0) {
+ ws_connect(t).then((sock) => {
+ socket = sock;
+
+ socket.addEventListener('message', (event) => {
+ // let newest = JSON.parse(event.data)
+ get_newest_messages();
+ });
+
+ socket.addEventListener('close', (event) => {
+ console.log('Connection closed');
+
+ if (t + 5 > 15) {
+ alert("Server timed out. Refresh page to try again");
+ } else {
+ console.log('Retrying in: ', t + 5);
+ ws_setup(t + 5);
+ }
+
+ });
+
+ socket.addEventListener('open', (event) => {
+ get_newest_messages();
+ });
+ })
+
+
+}
+
function load(): void {
xhttp_request("").then((server_info) => {
getelementbyid("info").innerHTML += server_info.version + ", " + server_info.name + ", users: " + server_info.users;
- // Get ready for websockets implementation in rocket_test 0.3
- if (server_info.version[2] < 3 ) {
- const interval = setInterval(get_newest_messages, 1000);
+ // Version 0.3.x implements websockets
+ if (server_info.version[2] < 3 || server_info.version[0] > 1) {
+ const interval = setInterval(get_newest_messages, 2000);
} else {
- // Initiate websocket "polling"
+ ws_setup();
}
})
+
}