Files
nodeMap/redux/websocketMiddleware.js
2024-09-09 15:20:00 +02:00

30 lines
669 B
JavaScript

// /redux/websocketMiddleware.js
const websocketMiddleware = () => {
let socket;
return ({ dispatch }) =>
(next) =>
(action) => {
if (action.type === "WS_CONNECT") {
socket = new WebSocket(action.payload.url);
socket.onmessage = (event) => {
const data = JSON.parse(event.data);
dispatch({ type: "WS_MESSAGE_RECEIVED", payload: data });
};
socket.onclose = () => {
dispatch({ type: "WS_DISCONNECTED" });
};
}
if (action.type === "WS_DISCONNECT" && socket) {
socket.close();
}
return next(action);
};
};
export default websocketMiddleware;