Version 1.0.2 mit node_modules Verzeichnis

This commit is contained in:
ISA
2024-10-02 07:58:24 +02:00
parent f353a06b1b
commit 62b6e55a0a
68228 changed files with 4548477 additions and 651 deletions

9
redux/actions.js Normal file
View File

@@ -0,0 +1,9 @@
// /redux/actions.js
export const connectWebSocket = (url) => ({
type: "WS_CONNECT",
payload: { url },
});
export const disconnectWebSocket = () => ({
type: "WS_DISCONNECT",
});

18
redux/reducer.js Normal file
View File

@@ -0,0 +1,18 @@
// /redux/reducer.js
const initialState = {
messages: [],
};
const websocketReducer = (state = initialState, action) => {
switch (action.type) {
case "WS_MESSAGE_RECEIVED":
return {
...state,
messages: [...state.messages, action.payload],
};
default:
return state;
}
};
export default websocketReducer;

12
redux/store.js Normal file
View File

@@ -0,0 +1,12 @@
// /redux/store.js
import { configureStore } from "@reduxjs/toolkit";
import websocketMiddleware from "./websocketMiddleware";
import websocketReducer from "./reducer";
// Erstelle den Store mit configureStore
const store = configureStore({
reducer: websocketReducer,
middleware: (getDefaultMiddleware) => getDefaultMiddleware().concat(websocketMiddleware),
});
export default store;

View File

@@ -0,0 +1,29 @@
// /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;