diff options
| author | Jules Laplace <julescarbon@gmail.com> | 2018-05-28 20:18:20 +0200 |
|---|---|---|
| committer | Jules Laplace <julescarbon@gmail.com> | 2018-05-28 20:18:20 +0200 |
| commit | 84aca1791d43ae5a65bd88747636e418b380ad64 (patch) | |
| tree | f56687c992bb6dc3956e8744be8030a48f00d95e /app/server/bridge.js | |
| parent | c248031739699775477c838f8e836fedf243c720 (diff) | |
reconsidering datasets component... stub in api client
Diffstat (limited to 'app/server/bridge.js')
| -rw-r--r-- | app/server/bridge.js | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/app/server/bridge.js b/app/server/bridge.js new file mode 100644 index 0000000..6168580 --- /dev/null +++ b/app/server/bridge.js @@ -0,0 +1,85 @@ +import { server } from './site' +import socket_io from 'socket.io' + +const io = socket_io(server) +let relay_connected = false + +export const client = io.of('/client') +client.on('connect', bind_client) + +export const relay = (() => { + let relay; + if (process.env.EXPRESS_CONNECTS_TO_RELAY === 'true') { + console.log('Connecting to relay on ' + process.env.RELAY_REMOTE) + relay = require('socket.io-client').connect(process.env.RELAY_REMOTE) + bind_relay(relay) + } else { + relay = io.of('/relay') + relay.on('connect', bind_relay) + } + return relay +})() + +function bind_relay(socket) { + console.log('Relay connected') + relay_connected = true + client.emit('system_res', { type: 'relay_connected' }) + + socket.on('res', data => { + // console.log('Received response', data.cmd) + client.emit('res', data) + }) + + socket.on('status', data => { + // console.log('Received status', data.key) + client.emit('status', data) + }) + + socket.on('system_res', data => { + // console.log('System responded', data.type) + client.emit('system_res', data) + }) + + socket.on('task_res', data => { + client.emit('task_res', data) + }) + + socket.on('frame', (data) => { + client.volatile.emit('frame', data) + }) + + socket.on('disconnect', () => { + console.log('Relay disconnected') + relay_connected = false + client.emit('system_res', { type: 'relay_disconnected' }) + }) +} + +function bind_client(socket){ + console.log('Client connected') + if (relay_connected) { + socket.emit('system_res', { type: 'relay_connected' }) + relay.emit('system', { cmd: 'get_status' }) + } else { + socket.emit('system_res', { type: 'relay_disconnected' }) + } + + socket.on('cmd', data => { + // console.log('Client sent command', data) + relay.emit('cmd', data) + }) + + socket.on('system', data => { + // console.log('Client sent system command', data) + relay.emit('system', data) + }) + + socket.on('task', data => { + // console.log('Client sent task command', data) + relay.emit('task', data) + }) + + socket.on('disconnect', () => { + console.log('Client disconnected') + }) +} |
