diff --git a/src/App.jsx b/src/App.jsx index b5405bd..c28a423 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -1,4 +1,4 @@ -import pushEventsToBrokers from "./usecases/utilities/PushEventsToBroker.mjs"; +import publishEventsToBrokers from "./usecases/utilities/StreamEvents.mjs"; import ClickStreamView from "./usecases/clickStream/ClickStreamView"; import StateChangeView from "./usecases/stateChange/StateChangeView"; import getDeviceIPAddress from "./usecases/utilities/GetDeviceIPAddress.mjs"; @@ -15,7 +15,7 @@ function App() { function onEventCreationHandler(eventType, data) { const eventPayload = createEventPayload(eventType, ip, data); - pushEventsToBrokers(eventPayload); + publishEventsToBrokers(eventPayload); setEventLogs((prevLogs) => [...prevLogs, eventPayload]); } diff --git a/src/usecases/utilities/StreamEvents.mjs b/src/usecases/utilities/StreamEvents.mjs new file mode 100644 index 0000000..12a5cd0 --- /dev/null +++ b/src/usecases/utilities/StreamEvents.mjs @@ -0,0 +1,37 @@ +import { CLICK_STREAM_EVENT } from "../../entities/EventType.mjs" +import dotenv from 'dotenv' +import io from 'socket.io-client'; + +dotenv.config(); +const socket_url = process.env.REACT_APP_SERVER_URL + "/websocket" +const BUFFERED_STORAGE_LIMIT = process.env.REACT_APP_BUFFERED_STORAGE_LIMIT +const buffered_push = process.env.REACT_APP_BUFFERED_PUSH_ENABLED +let bufferedStorage = [] + +console.log(process.env) + +const socket = io(socket_url); + +async function publishEvent(payload) { + return socket.emit(payload.eventType, { data: payload }); +} + +export default async function publishEventsToBroker(eventPayload) { + if (buffered_push === 'true') { + if (eventPayload.eventType === CLICK_STREAM_EVENT) { + bufferedStorage.push(eventPayload) + if (bufferedStorage.length >= BUFFERED_STORAGE_LIMIT) { + const bufferedData = bufferedStorage + bufferedStorage = [] + await publishEvent(eventPayload) + console.log("Pushed events : ", bufferedData) + return 1 + } else { + return 0 + } + } + } + await publishEvent(eventPayload) + console.log("Pushed event : ", eventPayload) + return 1 +} \ No newline at end of file