UNPKG

7.66 kBSource Map (JSON)View Raw
1{"version":3,"sources":["../../src/main-process/client.js"],"names":["close","screen","display","logger","socket","autoConnect","reconnection","reconnectionDelay","reconnectionDelayMax","reconnectionAttempts","Infinity","timeout","transports","emit","eventName","args","warn","debug","sendUpdate","data","setTimeout","serverHost","serverPort","on","err","error","errMessage","message","success","networkInterface","screenState","getCurrentScreenState","configTime","client","name","version","token","hostname","device","state","screens","getCurrentScreens","availableDisplays","action","info","off","refresh","rebooting","stop","screenshotBuffer","screenshot","connect","connected","Promise","resolve","once"],"mappings":"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","file":"client.js","sourcesContent":["import Logger from 'nightingale/src';\nimport { hostname } from 'os';\nimport createSocketClient from 'socket.io-client';\nimport { serverHost, serverPort, token, device } from './params';\nimport { getTime as getConfigTime } from './config';\nimport { onConfigUpdated } from './manager';\nimport * as screen from './commands/screen';\nimport * as display from './commands/display';\nimport availableDisplays from './utils/availableDisplays';\nimport findNetworkInterface from './utils/networkInterface';\nimport { selfUpdate } from './update';\nimport pkg from '../../package.json';\nimport { runSync } from './utils/exec';\n\nconst logger = new Logger('app:client');\n\nconst socket =\n serverHost &&\n serverPort &&\n createSocketClient(`${serverHost}:${serverPort}/raspberry-client`, {\n autoConnect: false,\n reconnection: true,\n reconnectionDelay: 500,\n reconnectionDelayMax: 120000, // 2 minutes\n reconnectionAttempts: Infinity,\n timeout: 4000,\n transports: ['websocket'],\n });\n\nconst emit = (eventName: string, ...args: Array<any>) => {\n if (!socket) {\n logger.warn('cannot emit', { eventName, args });\n return;\n }\n\n logger.debug('emit', { eventName, args });\n return socket.emit(eventName, ...args);\n};\n\nexport const sendUpdate = (data: Object): void => {\n emit('update', data);\n};\n\nif (socket) {\n // wait 1s before connecting\n setTimeout(() => {\n logger.debug('Connecting', { serverHost, serverPort });\n socket.on('connect_error', err =>\n logger.error('connect error', { serverHost, serverPort, errMessage: err.message }),\n );\n socket.on('reconnect_error', err =>\n logger.debug('reconnect error', { serverHost, serverPort, err }),\n );\n\n socket.on('disconnect', () => logger.warn('disconnected'));\n\n socket.on('reconnect', () => logger.success('reconnected'));\n\n socket.on('connect', () => {\n logger.success('connected');\n\n const networkInterface = findNetworkInterface();\n const screenState = screen.getCurrentScreenState();\n emit('hello', {\n configTime: getConfigTime(),\n client: { name: pkg.name, version: pkg.version },\n token,\n screenState, // deprecated\n ...networkInterface,\n hostname: hostname(),\n device,\n screen: {\n state: screenState,\n screens: screen.getCurrentScreens(),\n },\n availableDisplays,\n });\n });\n\n socket.on('updateConfig', onConfigUpdated);\n socket.on('changeConfig', onConfigUpdated);\n\n socket.on('selfUpdate', () => selfUpdate());\n\n socket.on('action', (action: string) => {\n logger.info('received action', { action });\n switch (action) {\n case 'self-upgrade':\n case 'self-update':\n case 'selfUpdate':\n return selfUpdate();\n\n case 'screen-off':\n return screen.off();\n case 'screen-on':\n return screen.on();\n\n case 'refresh':\n return display.refresh();\n\n case 'reboot':\n sendUpdate({ rebooting: true });\n display.stop();\n return runSync('reboot');\n\n case 'poweroff':\n sendUpdate({ rebooting: true });\n display.stop();\n return runSync('poweroff');\n }\n\n logger.warn(`unknown action: ${action}`);\n });\n\n socket.on('poll-data', () => {\n logger.debug('poll data');\n const screenshotBuffer = screen.screenshot();\n if (!screenshotBuffer) {\n return;\n }\n\n logger.debug('send screenshot');\n socket.emit('update-data', { screenshotBuffer });\n });\n\n socket.connect();\n }, 1000);\n}\n\nexport function close(): Promise<any> | void {\n if (!socket || !socket.connected) {\n return;\n }\n\n return new Promise(resolve => {\n logger.info('Closing...');\n socket.once('disconnect', () => {\n logger.info('Closed');\n resolve();\n });\n socket.close();\n });\n}\n"]}
\No newline at end of file