summaryrefslogtreecommitdiff
path: root/packages/backend/src/server/api/streaming.ts
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2022-09-18 03:27:08 +0900
committerGitHub <noreply@github.com>2022-09-18 03:27:08 +0900
commitb75184ec8e3436200bacdcd832e3324702553d20 (patch)
tree8b7e316f29e95df921db57289c8b8da476d18f07 /packages/backend/src/server/api/streaming.ts
parentUpdate ROADMAP.md (diff)
downloadsharkey-b75184ec8e3436200bacdcd832e3324702553d20.tar.gz
sharkey-b75184ec8e3436200bacdcd832e3324702553d20.tar.bz2
sharkey-b75184ec8e3436200bacdcd832e3324702553d20.zip
なんかもうめっちゃ変えた
Diffstat (limited to 'packages/backend/src/server/api/streaming.ts')
-rw-r--r--packages/backend/src/server/api/streaming.ts67
1 files changed, 0 insertions, 67 deletions
diff --git a/packages/backend/src/server/api/streaming.ts b/packages/backend/src/server/api/streaming.ts
deleted file mode 100644
index f8e42d27fe..0000000000
--- a/packages/backend/src/server/api/streaming.ts
+++ /dev/null
@@ -1,67 +0,0 @@
-import * as http from 'node:http';
-import * as websocket from 'websocket';
-
-import MainStreamConnection from './stream/index.js';
-import { ParsedUrlQuery } from 'querystring';
-import authenticate from './authenticate.js';
-import { EventEmitter } from 'events';
-import { subsdcriber as redisClient } from '../../db/redis.js';
-import { Users } from '@/models/index.js';
-
-export const initializeStreamingServer = (server: http.Server) => {
- // Init websocket server
- const ws = new websocket.server({
- httpServer: server,
- });
-
- ws.on('request', async (request) => {
- const q = request.resourceURL.query as ParsedUrlQuery;
-
- // TODO: トークンが間違ってるなどしてauthenticateに失敗したら
- // コネクション切断するなりエラーメッセージ返すなりする
- // (現状はエラーがキャッチされておらずサーバーのログに流れて邪魔なので)
- const [user, app] = await authenticate(q.i as string);
-
- if (user?.isSuspended) {
- request.reject(400);
- return;
- }
-
- const connection = request.accept();
-
- const ev = new EventEmitter();
-
- async function onRedisMessage(_: string, data: string) {
- const parsed = JSON.parse(data);
- ev.emit(parsed.channel, parsed.message);
- }
-
- redisClient.on('message', onRedisMessage);
-
- const main = new MainStreamConnection(connection, ev, user, app);
-
- const intervalId = user ? setInterval(() => {
- Users.update(user.id, {
- lastActiveDate: new Date(),
- });
- }, 1000 * 60 * 5) : null;
- if (user) {
- Users.update(user.id, {
- lastActiveDate: new Date(),
- });
- }
-
- connection.once('close', () => {
- ev.removeAllListeners();
- main.dispose();
- redisClient.off('message', onRedisMessage);
- if (intervalId) clearInterval(intervalId);
- });
-
- connection.on('message', async (data) => {
- if (data.type === 'utf8' && data.utf8Data === 'ping') {
- connection.send('pong');
- }
- });
- });
-};