import io from 'socket.io-client' import { getAuthToken } from '../auth/index' let socket let requestIdCounter = 0 const callbacks = {} export function setupSocketConnection(onConnect) { let port = window.location.port if (process.env.NODE_ENV !== 'production') { port = 8081 } socket = io.connect( window.location.protocol + '//' + window.location.hostname + ':' + port, ) socket.on('connect', onConnect) socket.on('response', onSocketResponse) } export function sendSocketRequest(request, callback) { if (!socket.connected) { console.error('Attempted to send request over unconnected socket') return } const newId = requestIdCounter++ callbacks[newId] = callback request.id = newId request.token = getAuthToken() if (!request.isRootRoute) { request.path = '/v2' + request.path } socket.emit('request', request) if (process.env.NODE_ENV !== 'production') { console.log('Sent socket request:', request) } } function onSocketResponse(json) { const response = JSON.parse(json) if (process.env.NODE_ENV !== 'production') { console.log('Received socket response:', response) } callbacks[response.id](response) delete callbacks[response.id] }