hippofish/packages/client/src/stream.ts

33 lines
593 B
TypeScript
Raw Normal View History

2023-01-13 05:40:33 +01:00
import * as Misskey from "calckey-js";
import { markRaw } from "vue";
import { $i } from "@/account";
import { url } from "@/config";
let stream: Misskey.Stream | null = null;
export function useStream(): Misskey.Stream {
if (stream) return stream;
stream = markRaw(
new Misskey.Stream(
url,
$i
? {
token: $i.token,
}
: null
)
);
window.setTimeout(heartbeat, 1000 * 60);
return stream;
}
function heartbeat(): void {
if (stream != null && document.visibilityState === "visible") {
stream.send("ping");
}
window.setTimeout(heartbeat, 1000 * 60);
}