diff options
Diffstat (limited to 'src/server/api/streaming.ts')
| -rw-r--r-- | src/server/api/streaming.ts | 73 |
1 files changed, 7 insertions, 66 deletions
diff --git a/src/server/api/streaming.ts b/src/server/api/streaming.ts index 09ec23a743..4518d21c3f 100644 --- a/src/server/api/streaming.ts +++ b/src/server/api/streaming.ts @@ -2,26 +2,12 @@ import * as http from 'http'; import * as websocket from 'websocket'; import Xev from 'xev'; -import homeStream from './stream/home'; -import localTimelineStream from './stream/local-timeline'; -import hybridTimelineStream from './stream/hybrid-timeline'; -import globalTimelineStream from './stream/global-timeline'; -import userListStream from './stream/user-list'; -import driveStream from './stream/drive'; -import messagingStream from './stream/messaging'; -import messagingIndexStream from './stream/messaging-index'; -import reversiGameStream from './stream/games/reversi-game'; -import reversiStream from './stream/games/reversi'; -import serverStatsStream from './stream/server-stats'; -import notesStatsStream from './stream/notes-stats'; -import hashtagStream from './stream/hashtag'; +import MainStreamConnection from './stream'; import { ParsedUrlQuery } from 'querystring'; import authenticate from './authenticate'; module.exports = (server: http.Server) => { - /** - * Init websocket server - */ + // Init websocket server const ws = new websocket.server({ httpServer: server }); @@ -29,20 +15,16 @@ module.exports = (server: http.Server) => { ws.on('request', async (request) => { const connection = request.accept(); - if (request.resourceURL.pathname === '/server-stats') { - serverStatsStream(request, connection); - return; - } + const ev = new Xev(); - if (request.resourceURL.pathname === '/notes-stats') { - notesStatsStream(request, connection); - return; - } + const q = request.resourceURL.query as ParsedUrlQuery; + const [user, app] = await authenticate(q.i as string); - const ev = new Xev(); + const main = new MainStreamConnection(connection, ev, user, app); connection.once('close', () => { ev.removeAllListeners(); + main.dispose(); }); connection.on('message', async (data) => { @@ -50,46 +32,5 @@ module.exports = (server: http.Server) => { connection.send('pong'); } }); - - const q = request.resourceURL.query as ParsedUrlQuery; - const [user, app] = await authenticate(q.i as string); - - if (request.resourceURL.pathname === '/games/reversi-game') { - reversiGameStream(request, connection, ev, user); - return; - } - - if (request.resourceURL.pathname === '/local-timeline') { - localTimelineStream(request, connection, ev, user); - return; - } - - if (request.resourceURL.pathname === '/hashtag') { - hashtagStream(request, connection, ev, user); - return; - } - - if (user == null) { - connection.send('authentication-failed'); - connection.close(); - return; - } - - const channel: any = - request.resourceURL.pathname === '/' ? homeStream : - request.resourceURL.pathname === '/hybrid-timeline' ? hybridTimelineStream : - request.resourceURL.pathname === '/global-timeline' ? globalTimelineStream : - request.resourceURL.pathname === '/user-list' ? userListStream : - request.resourceURL.pathname === '/drive' ? driveStream : - request.resourceURL.pathname === '/messaging' ? messagingStream : - request.resourceURL.pathname === '/messaging-index' ? messagingIndexStream : - request.resourceURL.pathname === '/games/reversi' ? reversiStream : - null; - - if (channel !== null) { - channel(request, connection, ev, user, app); - } else { - connection.close(); - } }); }; |