-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathjs.js
74 lines (64 loc) · 1.89 KB
/
js.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
import {
SubscribeRedeem,
SubscribeRaid,
SubscribeFollow,
SubscribeBits,
SubscribeSubscribe,
} from "./subscriptions.js";
import { SetSessionId, SetUserInfo } from "./shared.js";
import { FetchUserInfo, SubscribeTopic } from "./api.js";
import { OauthRedirectHandler } from "./oauth.js";
OauthRedirectHandler();
const socket = new WebSocket("wss://eventsub-beta.wss.twitch.tv/ws");
const keepAliveInSeconds = 50;
let lastKeepAlive = new Date();
socket.onopen = function (event) {
console.log("WebSocket connection opened: ", event);
};
setInterval(() => {
if (Date.now() > lastKeepAlive.getTime() + keepAliveInSeconds * 1000) {
console.log("Connection is probably lost");
}
}, keepAliveInSeconds * 1000);
// keepalive
socket.onmessage = async function (event) {
const message = JSON.parse(event.data);
const messageType = message.metadata.message_type;
if (messageType === "session_keepalive") {
lastKeepAlive = new Date();
}
};
// session_welcome
socket.addEventListener(
"message",
async function (event) {
const message = JSON.parse(event.data);
const messageType = message.metadata.message_type;
if (messageType === "session_welcome") {
console.log("Welcome: ", message);
SetSessionId(message.payload.session.id);
await SetUserInfo(FetchUserInfo());
await SubscribeTopic(SubscribeRedeem());
await SubscribeTopic(SubscribeRaid());
await SubscribeTopic(SubscribeFollow());
await SubscribeTopic(SubscribeBits());
await SubscribeTopic(SubscribeSubscribe());
}
},
false
);
// notification
socket.addEventListener(
"message",
async function (event) {
const message = JSON.parse(event.data);
console.log(message);
},
false
);
socket.onclose = function (event) {
console.log("WebSocket connection closed: ", event);
};
socket.onerror = function (error) {
console.error("WebSocket error: ", error);
};