+6
-7
src/main.ts
+6
-7
src/main.ts
···
8
8
let cursor = 0;
9
9
let intervalID: NodeJS.Timeout;
10
10
const cursorFile = fs.readFileSync("cursor.txt", "utf8");
11
-
12
11
const relay = cursorFile ? RELAY.concat("&cursor=", cursorFile) : RELAY;
12
+
const ws = new WebSocket(relay);
13
13
if (cursorFile) console.log(`Initiate firehose at cursor ${cursorFile}`);
14
-
const ws = new WebSocket(relay);
15
14
16
15
ws.on("error", (err) => console.error(err));
17
16
18
17
ws.on("open", () => {
19
18
intervalID = setInterval(() => {
20
19
console.log(`${new Date().toISOString()}: ${cursor}`);
21
-
fs.writeFile("cursor.txt", cursor.toString(), (err) => console.log(err));
20
+
fs.writeFile("cursor.txt", cursor.toString(), (err) => {
21
+
if (err) console.log(err);
22
+
});
22
23
}, 60000);
23
24
});
24
25
25
-
ws.on("close", () => {
26
-
clearInterval(intervalID);
27
-
});
26
+
ws.on("close", () => clearInterval(intervalID));
28
27
29
28
ws.on("message", (data) => {
30
29
const event: EventStream = JSON.parse(data.toString());
31
30
cursor = event.time_us;
32
31
if (
33
-
event.commit?.record?.subject?.uri?.includes(DID + "/app.bsky.feed.post")
32
+
event.commit?.record?.subject?.uri?.includes(`${DID}/app.bsky.feed.post`)
34
33
) {
35
34
label(event.did, event.commit.record.subject.uri.split("/").pop()!);
36
35
}