Mercurial > code > home > repos > streamed-graph
annotate src/streamed_graph_client.ts @ 80:7c93e17b1111
more fixes, more original code uncommented
author | drewp@bigasterisk.com |
---|---|
date | Wed, 17 Nov 2021 15:00:17 -0800 |
parents | 0c188ed3bcd8 |
children | 43e016fa302e |
rev | line source |
---|---|
79
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
1 // // from /my/site/homepage/www/rdf/streamed-graph.js |
3
a7ba8627a7b6
still trying to make imports work. add other files too
drewp@bigasterisk.com
parents:
diff
changeset
|
2 |
79
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
3 // import { eachJsonLdQuad } from "./json_ld_quads"; |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
4 // import { N3Store } from "n3"; |
80
7c93e17b1111
more fixes, more original code uncommented
drewp@bigasterisk.com
parents:
79
diff
changeset
|
5 import { Store } from "n3"; |
3
a7ba8627a7b6
still trying to make imports work. add other files too
drewp@bigasterisk.com
parents:
diff
changeset
|
6 |
80
7c93e17b1111
more fixes, more original code uncommented
drewp@bigasterisk.com
parents:
79
diff
changeset
|
7 export class StreamedGraphClient { |
79
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
8 // // holds a n3 Store, which is synced to a server-side |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
9 // // store that sends patches over SSE |
8
6fefd287aff9
closer- element now holds a changing graph, but can't draw it yet
drewp@bigasterisk.com
parents:
6
diff
changeset
|
10 |
80
7c93e17b1111
more fixes, more original code uncommented
drewp@bigasterisk.com
parents:
79
diff
changeset
|
11 onStatus: (msg: string) => void = function(m){}; |
7c93e17b1111
more fixes, more original code uncommented
drewp@bigasterisk.com
parents:
79
diff
changeset
|
12 onGraphChanged: () => void = function(){}; |
7c93e17b1111
more fixes, more original code uncommented
drewp@bigasterisk.com
parents:
79
diff
changeset
|
13 store: Store; |
79
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
14 // _deletedCount: number = 0; |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
15 // events!: EventSource; |
80
7c93e17b1111
more fixes, more original code uncommented
drewp@bigasterisk.com
parents:
79
diff
changeset
|
16 constructor( |
7c93e17b1111
more fixes, more original code uncommented
drewp@bigasterisk.com
parents:
79
diff
changeset
|
17 eventsUrl: string, |
7c93e17b1111
more fixes, more original code uncommented
drewp@bigasterisk.com
parents:
79
diff
changeset
|
18 onGraphChanged: () => void, |
7c93e17b1111
more fixes, more original code uncommented
drewp@bigasterisk.com
parents:
79
diff
changeset
|
19 onStatus: (status: string) => void, |
7c93e17b1111
more fixes, more original code uncommented
drewp@bigasterisk.com
parents:
79
diff
changeset
|
20 prefixes: Array<Record<string, string>>, |
7c93e17b1111
more fixes, more original code uncommented
drewp@bigasterisk.com
parents:
79
diff
changeset
|
21 staticGraphUrls: Array<string> |
7c93e17b1111
more fixes, more original code uncommented
drewp@bigasterisk.com
parents:
79
diff
changeset
|
22 ) { |
7c93e17b1111
more fixes, more original code uncommented
drewp@bigasterisk.com
parents:
79
diff
changeset
|
23 console.log("new StreamedGraph", eventsUrl); |
7c93e17b1111
more fixes, more original code uncommented
drewp@bigasterisk.com
parents:
79
diff
changeset
|
24 this.onStatus = onStatus; |
7c93e17b1111
more fixes, more original code uncommented
drewp@bigasterisk.com
parents:
79
diff
changeset
|
25 this.onGraphChanged = onGraphChanged; |
7c93e17b1111
more fixes, more original code uncommented
drewp@bigasterisk.com
parents:
79
diff
changeset
|
26 this.onStatus("startup..."); |
3
a7ba8627a7b6
still trying to make imports work. add other files too
drewp@bigasterisk.com
parents:
diff
changeset
|
27 |
80
7c93e17b1111
more fixes, more original code uncommented
drewp@bigasterisk.com
parents:
79
diff
changeset
|
28 this.store = new Store(); |
36 | 29 |
79
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
30 // // // Object.keys(prefixes).forEach((prefix) => { |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
31 // // // this.store.setPrefix(prefix, prefixes[prefix]); |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
32 // // // }); |
3
a7ba8627a7b6
still trying to make imports work. add other files too
drewp@bigasterisk.com
parents:
diff
changeset
|
33 |
80
7c93e17b1111
more fixes, more original code uncommented
drewp@bigasterisk.com
parents:
79
diff
changeset
|
34 this.connect(eventsUrl); |
79
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
35 // this.reconnectOnWake(); |
3
a7ba8627a7b6
still trying to make imports work. add other files too
drewp@bigasterisk.com
parents:
diff
changeset
|
36 |
79
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
37 // // staticGraphUrls.forEach((url) => { |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
38 // // fetch(url).then((response) => response.text()) |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
39 // // .then((body) => { |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
40 // // // parse with n3, add to output |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
41 // // }); |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
42 // // }); |
80
7c93e17b1111
more fixes, more original code uncommented
drewp@bigasterisk.com
parents:
79
diff
changeset
|
43 } |
3
a7ba8627a7b6
still trying to make imports work. add other files too
drewp@bigasterisk.com
parents:
diff
changeset
|
44 |
79
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
45 // _vacuum() { |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
46 // // workaround for the growing _ids map |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
47 // this.store = new Store(this.store.getQuads(null, null, null, null)); |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
48 // } |
67
163b4339804d
try addressing decreasing performance by rebuilding the graph occasionally
drewp@bigasterisk.com
parents:
36
diff
changeset
|
49 |
79
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
50 // reconnectOnWake() { |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
51 // // it's not this, which fires on every mouse-in on a browser window, and doesn't seem to work for screen-turned-back-on |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
52 // //window.addEventListener('focus', function() { this.connect(eventsUrl); }.bind(this)); |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
53 // } |
3
a7ba8627a7b6
still trying to make imports work. add other files too
drewp@bigasterisk.com
parents:
diff
changeset
|
54 |
80
7c93e17b1111
more fixes, more original code uncommented
drewp@bigasterisk.com
parents:
79
diff
changeset
|
55 connect(eventsUrl: string) { |
79
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
56 // // need to exit here if this obj has been replaced |
3
a7ba8627a7b6
still trying to make imports work. add other files too
drewp@bigasterisk.com
parents:
diff
changeset
|
57 |
79
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
58 // this.onStatus("start connect..."); |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
59 // this.close(); |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
60 // if (this.events && this.events.readyState != EventSource.CLOSED) { |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
61 // this.onStatus("zombie"); |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
62 // throw new Error("zombie eventsource"); |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
63 // } |
3
a7ba8627a7b6
still trying to make imports work. add other files too
drewp@bigasterisk.com
parents:
diff
changeset
|
64 |
79
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
65 // this.events = new EventSource(eventsUrl); |
3
a7ba8627a7b6
still trying to make imports work. add other files too
drewp@bigasterisk.com
parents:
diff
changeset
|
66 |
79
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
67 // this.events.addEventListener("error", ev => { |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
68 // // todo: this is piling up tons of retries and eventually multiple connections |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
69 // // this.testEventUrl(eventsUrl); |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
70 // this.onStatus("connection lost- retrying"); |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
71 // setTimeout(() => { |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
72 // requestAnimationFrame(() => { |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
73 // this.connect(eventsUrl); |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
74 // }); |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
75 // }, 3000); |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
76 // }); |
3
a7ba8627a7b6
still trying to make imports work. add other files too
drewp@bigasterisk.com
parents:
diff
changeset
|
77 |
79
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
78 // this.events.addEventListener("fullGraph", async ev => { |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
79 // this.onStatus("sync- full graph update"); |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
80 // await this.replaceFullGraph((ev as MessageEvent).data); |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
81 // this.onStatus(`synced ${this.store.size}`); |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
82 // this.onGraphChanged(); |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
83 // }); |
3
a7ba8627a7b6
still trying to make imports work. add other files too
drewp@bigasterisk.com
parents:
diff
changeset
|
84 |
79
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
85 // this.events.addEventListener("patch", async ev => { |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
86 // this.onStatus("sync- updating"); |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
87 // await this.patchGraph((ev as MessageEvent).data); |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
88 // this.onStatus(`synced ${this.store.size}`); |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
89 // this.onGraphChanged(); |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
90 // }); |
80
7c93e17b1111
more fixes, more original code uncommented
drewp@bigasterisk.com
parents:
79
diff
changeset
|
91 this.onStatus("connecting..."); |
7c93e17b1111
more fixes, more original code uncommented
drewp@bigasterisk.com
parents:
79
diff
changeset
|
92 } |
3
a7ba8627a7b6
still trying to make imports work. add other files too
drewp@bigasterisk.com
parents:
diff
changeset
|
93 |
79
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
94 // // these need some locks |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
95 // async replaceFullGraph(jsonLdText: string) { |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
96 // this.store = new Store(); |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
97 // await eachJsonLdQuad( |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
98 // JSON.parse(jsonLdText), |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
99 // this.store.addQuad.bind(this.store) |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
100 // ); |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
101 // } |
5 | 102 |
79
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
103 // async patchGraph(patchJson: string) { |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
104 // var patch = JSON.parse(patchJson).patch; |
3
a7ba8627a7b6
still trying to make imports work. add other files too
drewp@bigasterisk.com
parents:
diff
changeset
|
105 |
79
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
106 // await eachJsonLdQuad(patch.deletes, quad => { |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
107 // this.store.removeQuad(quad); |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
108 // this._deletedCount++; |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
109 // }); |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
110 // await eachJsonLdQuad(patch.adds, this.store.addQuad.bind(this.store)); |
67
163b4339804d
try addressing decreasing performance by rebuilding the graph occasionally
drewp@bigasterisk.com
parents:
36
diff
changeset
|
111 |
79
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
112 // if (this._deletedCount > 100) { |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
113 // this._vacuum(); |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
114 // this._deletedCount = 0; |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
115 // } |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
116 // } |
36 | 117 |
80
7c93e17b1111
more fixes, more original code uncommented
drewp@bigasterisk.com
parents:
79
diff
changeset
|
118 close() { |
79
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
119 // if (this.events) { |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
120 // this.events.close(); |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
121 // } |
80
7c93e17b1111
more fixes, more original code uncommented
drewp@bigasterisk.com
parents:
79
diff
changeset
|
122 } |
5 | 123 |
79
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
124 // async testEventUrl(eventsUrl: string): Promise<void> { |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
125 // return new Promise<void>((resolve, reject) => { |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
126 // this.onStatus("testing connection"); |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
127 // fetch(eventsUrl, { |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
128 // method: "HEAD", |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
129 // credentials: "include" |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
130 // }) |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
131 // .then(value => { |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
132 // if (value.status == 403) { |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
133 // reject(); |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
134 // return; |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
135 // } |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
136 // resolve(); |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
137 // }) |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
138 // .catch(err => { |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
139 // reject(); |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
140 // }); |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
67
diff
changeset
|
141 // }); |
80
7c93e17b1111
more fixes, more original code uncommented
drewp@bigasterisk.com
parents:
79
diff
changeset
|
142 // } |
7c93e17b1111
more fixes, more original code uncommented
drewp@bigasterisk.com
parents:
79
diff
changeset
|
143 } |