annotate web/websocket.js @ 2440:d1f86109e3cc

more *value getter variants
author drewp@bigasterisk.com
date Thu, 30 May 2024 01:08:45 -0700
parents 4556eebe5d73
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1217
e703b3434dbd websocket and web cleanup
Drew Perttula <drewp@bigasterisk.com>
parents: 1212
diff changeset
1 /*
1873
f001d689b3e2 more py3 and typing fixes
Drew Perttula <drewp@bigasterisk.com>
parents: 1217
diff changeset
2 url is now relative to the window location. Note that nginx may drop
f001d689b3e2 more py3 and typing fixes
Drew Perttula <drewp@bigasterisk.com>
parents: 1217
diff changeset
3 the connection after 60sec of inactivity.
1217
e703b3434dbd websocket and web cleanup
Drew Perttula <drewp@bigasterisk.com>
parents: 1212
diff changeset
4 */
1950
19c2e6216cf8 support disconnect() on a reconnectingWebSocket to make it stop connecting
Drew Perttula <drewp@bigasterisk.com>
parents: 1873
diff changeset
5
19c2e6216cf8 support disconnect() on a reconnectingWebSocket to make it stop connecting
Drew Perttula <drewp@bigasterisk.com>
parents: 1873
diff changeset
6 class ReconnectingWebsocket {
1217
e703b3434dbd websocket and web cleanup
Drew Perttula <drewp@bigasterisk.com>
parents: 1212
diff changeset
7
1950
19c2e6216cf8 support disconnect() on a reconnectingWebSocket to make it stop connecting
Drew Perttula <drewp@bigasterisk.com>
parents: 1873
diff changeset
8 constructor(url, onMessage) {
19c2e6216cf8 support disconnect() on a reconnectingWebSocket to make it stop connecting
Drew Perttula <drewp@bigasterisk.com>
parents: 1873
diff changeset
9 this.onMessage = onMessage;
19c2e6216cf8 support disconnect() on a reconnectingWebSocket to make it stop connecting
Drew Perttula <drewp@bigasterisk.com>
parents: 1873
diff changeset
10 this.ws = null;
19c2e6216cf8 support disconnect() on a reconnectingWebSocket to make it stop connecting
Drew Perttula <drewp@bigasterisk.com>
parents: 1873
diff changeset
11 this.connectTimer = null
19c2e6216cf8 support disconnect() on a reconnectingWebSocket to make it stop connecting
Drew Perttula <drewp@bigasterisk.com>
parents: 1873
diff changeset
12 this.pong = 0;
813
6f984ce851e2 refactor rdfdb web ui
drewp@bigasterisk.com
parents:
diff changeset
13
1950
19c2e6216cf8 support disconnect() on a reconnectingWebSocket to make it stop connecting
Drew Perttula <drewp@bigasterisk.com>
parents: 1873
diff changeset
14 this.fullUrl = (
19c2e6216cf8 support disconnect() on a reconnectingWebSocket to make it stop connecting
Drew Perttula <drewp@bigasterisk.com>
parents: 1873
diff changeset
15 "ws://"
19c2e6216cf8 support disconnect() on a reconnectingWebSocket to make it stop connecting
Drew Perttula <drewp@bigasterisk.com>
parents: 1873
diff changeset
16 + window.location.host
19c2e6216cf8 support disconnect() on a reconnectingWebSocket to make it stop connecting
Drew Perttula <drewp@bigasterisk.com>
parents: 1873
diff changeset
17 + window.location.pathname
19c2e6216cf8 support disconnect() on a reconnectingWebSocket to make it stop connecting
Drew Perttula <drewp@bigasterisk.com>
parents: 1873
diff changeset
18 + (window.location.pathname.match(/\/$/) ? "" : "/")
19c2e6216cf8 support disconnect() on a reconnectingWebSocket to make it stop connecting
Drew Perttula <drewp@bigasterisk.com>
parents: 1873
diff changeset
19 + url);
19c2e6216cf8 support disconnect() on a reconnectingWebSocket to make it stop connecting
Drew Perttula <drewp@bigasterisk.com>
parents: 1873
diff changeset
20 this.connect();
19c2e6216cf8 support disconnect() on a reconnectingWebSocket to make it stop connecting
Drew Perttula <drewp@bigasterisk.com>
parents: 1873
diff changeset
21 }
19c2e6216cf8 support disconnect() on a reconnectingWebSocket to make it stop connecting
Drew Perttula <drewp@bigasterisk.com>
parents: 1873
diff changeset
22 setStatus(txt) {
19c2e6216cf8 support disconnect() on a reconnectingWebSocket to make it stop connecting
Drew Perttula <drewp@bigasterisk.com>
parents: 1873
diff changeset
23 const docStatus = document.querySelector('#status')
19c2e6216cf8 support disconnect() on a reconnectingWebSocket to make it stop connecting
Drew Perttula <drewp@bigasterisk.com>
parents: 1873
diff changeset
24 if (docStatus) {
19c2e6216cf8 support disconnect() on a reconnectingWebSocket to make it stop connecting
Drew Perttula <drewp@bigasterisk.com>
parents: 1873
diff changeset
25 docStatus.innerText = txt;
19c2e6216cf8 support disconnect() on a reconnectingWebSocket to make it stop connecting
Drew Perttula <drewp@bigasterisk.com>
parents: 1873
diff changeset
26 }
19c2e6216cf8 support disconnect() on a reconnectingWebSocket to make it stop connecting
Drew Perttula <drewp@bigasterisk.com>
parents: 1873
diff changeset
27 }
19c2e6216cf8 support disconnect() on a reconnectingWebSocket to make it stop connecting
Drew Perttula <drewp@bigasterisk.com>
parents: 1873
diff changeset
28 connect() {
19c2e6216cf8 support disconnect() on a reconnectingWebSocket to make it stop connecting
Drew Perttula <drewp@bigasterisk.com>
parents: 1873
diff changeset
29 this.reconnect = true;
19c2e6216cf8 support disconnect() on a reconnectingWebSocket to make it stop connecting
Drew Perttula <drewp@bigasterisk.com>
parents: 1873
diff changeset
30 this.ws = new WebSocket(this.fullUrl);
19c2e6216cf8 support disconnect() on a reconnectingWebSocket to make it stop connecting
Drew Perttula <drewp@bigasterisk.com>
parents: 1873
diff changeset
31
19c2e6216cf8 support disconnect() on a reconnectingWebSocket to make it stop connecting
Drew Perttula <drewp@bigasterisk.com>
parents: 1873
diff changeset
32 this.ws.onopen = () => { this.setStatus("connected"); };
19c2e6216cf8 support disconnect() on a reconnectingWebSocket to make it stop connecting
Drew Perttula <drewp@bigasterisk.com>
parents: 1873
diff changeset
33 this.ws.onerror = (e) => { this.setStatus("error: "+e); };
19c2e6216cf8 support disconnect() on a reconnectingWebSocket to make it stop connecting
Drew Perttula <drewp@bigasterisk.com>
parents: 1873
diff changeset
34 this.ws.onclose = () => {
19c2e6216cf8 support disconnect() on a reconnectingWebSocket to make it stop connecting
Drew Perttula <drewp@bigasterisk.com>
parents: 1873
diff changeset
35 this.pong = 1 - this.pong;
19c2e6216cf8 support disconnect() on a reconnectingWebSocket to make it stop connecting
Drew Perttula <drewp@bigasterisk.com>
parents: 1873
diff changeset
36 this.setStatus("disconnected (retrying "+(this.pong ? "😼":"😺")+")");
19c2e6216cf8 support disconnect() on a reconnectingWebSocket to make it stop connecting
Drew Perttula <drewp@bigasterisk.com>
parents: 1873
diff changeset
37 this.ws = null;
19c2e6216cf8 support disconnect() on a reconnectingWebSocket to make it stop connecting
Drew Perttula <drewp@bigasterisk.com>
parents: 1873
diff changeset
38
19c2e6216cf8 support disconnect() on a reconnectingWebSocket to make it stop connecting
Drew Perttula <drewp@bigasterisk.com>
parents: 1873
diff changeset
39 this.connectTimer = setTimeout(() => {
19c2e6216cf8 support disconnect() on a reconnectingWebSocket to make it stop connecting
Drew Perttula <drewp@bigasterisk.com>
parents: 1873
diff changeset
40 this.connectTimer = null;
19c2e6216cf8 support disconnect() on a reconnectingWebSocket to make it stop connecting
Drew Perttula <drewp@bigasterisk.com>
parents: 1873
diff changeset
41 requestAnimationFrame(() => {
19c2e6216cf8 support disconnect() on a reconnectingWebSocket to make it stop connecting
Drew Perttula <drewp@bigasterisk.com>
parents: 1873
diff changeset
42 if (this.reconnect) {
19c2e6216cf8 support disconnect() on a reconnectingWebSocket to make it stop connecting
Drew Perttula <drewp@bigasterisk.com>
parents: 1873
diff changeset
43 this.connect();
19c2e6216cf8 support disconnect() on a reconnectingWebSocket to make it stop connecting
Drew Perttula <drewp@bigasterisk.com>
parents: 1873
diff changeset
44 }
19c2e6216cf8 support disconnect() on a reconnectingWebSocket to make it stop connecting
Drew Perttula <drewp@bigasterisk.com>
parents: 1873
diff changeset
45 });
19c2e6216cf8 support disconnect() on a reconnectingWebSocket to make it stop connecting
Drew Perttula <drewp@bigasterisk.com>
parents: 1873
diff changeset
46 }, 2000);
813
6f984ce851e2 refactor rdfdb web ui
drewp@bigasterisk.com
parents:
diff changeset
47 };
1950
19c2e6216cf8 support disconnect() on a reconnectingWebSocket to make it stop connecting
Drew Perttula <drewp@bigasterisk.com>
parents: 1873
diff changeset
48 this.ws.onmessage = (evt) => {
19c2e6216cf8 support disconnect() on a reconnectingWebSocket to make it stop connecting
Drew Perttula <drewp@bigasterisk.com>
parents: 1873
diff changeset
49 this.onMessage(JSON.parse(evt.data));
813
6f984ce851e2 refactor rdfdb web ui
drewp@bigasterisk.com
parents:
diff changeset
50 };
6f984ce851e2 refactor rdfdb web ui
drewp@bigasterisk.com
parents:
diff changeset
51 }
1950
19c2e6216cf8 support disconnect() on a reconnectingWebSocket to make it stop connecting
Drew Perttula <drewp@bigasterisk.com>
parents: 1873
diff changeset
52 disconnect() {
19c2e6216cf8 support disconnect() on a reconnectingWebSocket to make it stop connecting
Drew Perttula <drewp@bigasterisk.com>
parents: 1873
diff changeset
53 this.reconnect = false;
19c2e6216cf8 support disconnect() on a reconnectingWebSocket to make it stop connecting
Drew Perttula <drewp@bigasterisk.com>
parents: 1873
diff changeset
54 this.ws.close();
19c2e6216cf8 support disconnect() on a reconnectingWebSocket to make it stop connecting
Drew Perttula <drewp@bigasterisk.com>
parents: 1873
diff changeset
55 }
1217
e703b3434dbd websocket and web cleanup
Drew Perttula <drewp@bigasterisk.com>
parents: 1212
diff changeset
56 }
1950
19c2e6216cf8 support disconnect() on a reconnectingWebSocket to make it stop connecting
Drew Perttula <drewp@bigasterisk.com>
parents: 1873
diff changeset
57
19c2e6216cf8 support disconnect() on a reconnectingWebSocket to make it stop connecting
Drew Perttula <drewp@bigasterisk.com>
parents: 1873
diff changeset
58
19c2e6216cf8 support disconnect() on a reconnectingWebSocket to make it stop connecting
Drew Perttula <drewp@bigasterisk.com>
parents: 1873
diff changeset
59
19c2e6216cf8 support disconnect() on a reconnectingWebSocket to make it stop connecting
Drew Perttula <drewp@bigasterisk.com>
parents: 1873
diff changeset
60 function reconnectingWebSocket(url, onMessage) {
19c2e6216cf8 support disconnect() on a reconnectingWebSocket to make it stop connecting
Drew Perttula <drewp@bigasterisk.com>
parents: 1873
diff changeset
61 return new ReconnectingWebsocket(url, onMessage);
19c2e6216cf8 support disconnect() on a reconnectingWebSocket to make it stop connecting
Drew Perttula <drewp@bigasterisk.com>
parents: 1873
diff changeset
62 }