2017-06-08 19:03:54 +03:00
|
|
|
import * as websocket from 'websocket';
|
|
|
|
import Xev from 'xev';
|
|
|
|
|
|
|
|
const ev = new Xev();
|
|
|
|
|
2018-03-07 04:40:40 +02:00
|
|
|
export default function(request: websocket.request, connection: websocket.connection): void {
|
2017-06-08 19:03:54 +03:00
|
|
|
const onStats = stats => {
|
|
|
|
connection.send(JSON.stringify({
|
|
|
|
type: 'stats',
|
|
|
|
body: stats
|
|
|
|
}));
|
|
|
|
};
|
|
|
|
|
2018-06-08 19:45:25 +03:00
|
|
|
connection.on('message', async data => {
|
|
|
|
const msg = JSON.parse(data.utf8Data);
|
|
|
|
|
|
|
|
switch (msg.type) {
|
|
|
|
case 'requestLog':
|
2018-06-08 22:14:26 +03:00
|
|
|
ev.once('notesStatsLog:' + msg.id, statsLog => {
|
2018-06-08 19:45:25 +03:00
|
|
|
connection.send(JSON.stringify({
|
|
|
|
type: 'statsLog',
|
|
|
|
body: statsLog
|
|
|
|
}));
|
|
|
|
});
|
2018-06-08 22:14:26 +03:00
|
|
|
ev.emit('requestNotesStatsLog', msg.id);
|
2018-06-08 19:45:25 +03:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
2018-06-08 22:14:26 +03:00
|
|
|
ev.addListener('notesStats', onStats);
|
2017-06-08 19:03:54 +03:00
|
|
|
|
|
|
|
connection.on('close', () => {
|
2018-06-08 22:14:26 +03:00
|
|
|
ev.removeListener('notesStats', onStats);
|
2017-06-08 19:03:54 +03:00
|
|
|
});
|
|
|
|
}
|