From 90fae26aa4bd0e0eb3272ff6e6524060e9004fbb Mon Sep 17 00:00:00 2001 From: Georgios Andreadis Date: Mon, 29 Jun 2020 15:47:09 +0200 Subject: Prepare frontend repository for monorepo This change prepares the frontend Git repository for the monorepo residing at https://github.com/atlarge-research.com/opendc. To accomodate for this, we move all files into a frontend subdirectory. --- frontend/src/api/socket.js | 52 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 frontend/src/api/socket.js (limited to 'frontend/src/api/socket.js') diff --git a/frontend/src/api/socket.js b/frontend/src/api/socket.js new file mode 100644 index 00000000..fadb77ad --- /dev/null +++ b/frontend/src/api/socket.js @@ -0,0 +1,52 @@ +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]; +} -- cgit v1.2.3