2018-04-17 15:55:19 -04:00
|
|
|
const {getExifTags} = require('./exif-helpers');
|
2018-04-12 21:57:16 -04:00
|
|
|
/**
|
|
|
|
* Websocket event handlers
|
|
|
|
*/
|
2018-04-13 23:28:55 -04:00
|
|
|
const {JSONMessage} = require('../helpers/web-socket');
|
2018-04-17 15:55:19 -04:00
|
|
|
// eslint-disable-next-line
|
|
|
|
const WebSocket = require('ws');
|
2018-04-12 21:57:16 -04:00
|
|
|
|
2018-04-17 15:55:19 -04:00
|
|
|
const wss = new WebSocket.Server({
|
|
|
|
perMessageDeflate: false,
|
|
|
|
port: 65432,
|
|
|
|
});
|
2018-04-16 16:37:00 -04:00
|
|
|
|
2018-04-17 15:55:19 -04:00
|
|
|
wss.broadcast = (data) => {
|
|
|
|
wss.clients.forEach(client => {
|
|
|
|
if (client.readyState === WebSocket.OPEN) {
|
|
|
|
client.send(data);
|
|
|
|
}
|
2018-04-12 21:57:16 -04:00
|
|
|
});
|
|
|
|
};
|
2018-04-16 16:37:00 -04:00
|
|
|
|
2018-04-17 15:55:19 -04:00
|
|
|
wss.on('connection', ws => {
|
|
|
|
ws.send(JSONMessage('server-log', 'Connected to client!'));
|
|
|
|
ws.on('message', async (...args) => {
|
|
|
|
const [type, message] = JSON.parse(args);
|
|
|
|
switch (type) {
|
|
|
|
case 'dropped-files':
|
|
|
|
const filemap = await Promise.all(
|
|
|
|
message.map(file => getExifTags(file))
|
|
|
|
);
|
|
|
|
wss.broadcast(JSONMessage('parsed-exif-tags', await filemap));
|
|
|
|
break;
|
|
|
|
|
|
|
|
default:
|
|
|
|
return ws.send(JSONMessage('server-log', [type, message]));
|
|
|
|
}
|
|
|
|
});
|
|
|
|
});
|