wip
This commit is contained in:
35
src/server/api/stream/hashtags-stats.ts
Normal file
35
src/server/api/stream/hashtags-stats.ts
Normal file
@ -0,0 +1,35 @@
|
||||
import * as websocket from 'websocket';
|
||||
import Xev from 'xev';
|
||||
|
||||
const ev = new Xev();
|
||||
|
||||
export default function(request: websocket.request, connection: websocket.connection): void {
|
||||
const onStats = stats => {
|
||||
connection.send(JSON.stringify({
|
||||
type: 'stats',
|
||||
body: stats
|
||||
}));
|
||||
};
|
||||
|
||||
connection.on('message', async data => {
|
||||
const msg = JSON.parse(data.utf8Data);
|
||||
|
||||
switch (msg.type) {
|
||||
case 'requestLog':
|
||||
ev.once('hashtagsStatsLog:' + msg.id, statsLog => {
|
||||
connection.send(JSON.stringify({
|
||||
type: 'statsLog',
|
||||
body: statsLog
|
||||
}));
|
||||
});
|
||||
ev.emit('requestHashtagsStatsLog', msg.id);
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
ev.addListener('hashtagsStats', onStats);
|
||||
|
||||
connection.on('close', () => {
|
||||
ev.removeListener('hashtagsStats', onStats);
|
||||
});
|
||||
}
|
@ -14,6 +14,7 @@ import othelloGameStream from './stream/othello-game';
|
||||
import othelloStream from './stream/othello';
|
||||
import serverStatsStream from './stream/server-stats';
|
||||
import notesStatsStream from './stream/notes-stats';
|
||||
import hashtagsStatsStream from './stream/hashtags-stats';
|
||||
import requestsStream from './stream/requests';
|
||||
import { ParsedUrlQuery } from 'querystring';
|
||||
import authenticate from './authenticate';
|
||||
@ -39,6 +40,11 @@ module.exports = (server: http.Server) => {
|
||||
return;
|
||||
}
|
||||
|
||||
if (request.resourceURL.pathname === '/hashtags-stats') {
|
||||
hashtagsStatsStream(request, connection);
|
||||
return;
|
||||
}
|
||||
|
||||
if (request.resourceURL.pathname === '/requests') {
|
||||
requestsStream(request, connection);
|
||||
return;
|
||||
|
Reference in New Issue
Block a user