film-exif/src/electron/websocket-events.js

39 lines
900 B
JavaScript

const {getExifTags} = require('./exif-helpers');
/**
* Websocket event handlers
*/
const {JSONMessage} = require('../helpers/web-socket');
// eslint-disable-next-line
const WebSocket = require('ws');
const wss = new WebSocket.Server({
perMessageDeflate: false,
port: 65432,
});
wss.broadcast = (data) => {
wss.clients.forEach(client => {
if (client.readyState === WebSocket.OPEN) {
client.send(data);
}
});
};
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]));
}
});
});