From 21944dccbbf6d17c65d4cbfadff1fd00df7c88a2 Mon Sep 17 00:00:00 2001 From: Stefan Kraus <stefan.kraus@methodpark.de> Date: Sun, 13 Dec 2020 15:20:55 +0100 Subject: [PATCH] broken impl --- .../src/backendconnection/communication.ts | 19 ++++++++++++++++--- .../connectionstatus/ConnectionStatusBar.tsx | 4 ++-- .../connectionstatus/ConnectionStatusSlice.ts | 4 ++-- frontend/src/store/store.ts | 9 ++++----- 4 files changed, 24 insertions(+), 12 deletions(-) diff --git a/frontend/src/backendconnection/communication.ts b/frontend/src/backendconnection/communication.ts index 14fe03a..fcd8fb0 100644 --- a/frontend/src/backendconnection/communication.ts +++ b/frontend/src/backendconnection/communication.ts @@ -4,9 +4,14 @@ import { setPlaySeconds, } from "../player/PlayerSlice"; -import { setConnectionStatus } from "../connectionstatus/ConnectionStatusSlice"; +import { selectConnected, setConnectionStatus } from "../connectionstatus/ConnectionStatusSlice"; -import { all, put, select, takeEvery } from "redux-saga/effects"; +import { all, call, delay, put, retry, select, takeEvery } from "redux-saga/effects"; +import { connect } from "@giantmachines/redux-websocket/dist"; + +export const getNewConnectionAction = (): any => { + return connect("wss://mpvsync.de:8432/") +} export const requestPlay = { type: "REDUX_WEBSOCKET::SEND", @@ -110,7 +115,15 @@ function* handleConnectionStatus(action: any) { break; } case "REDUX_WEBSOCKET::CLOSED": { - yield put(setConnectionStatus(false)); + let con_status = yield select(selectConnected) + if(con_status === null){ + console.log("in first case!yyy"); + yield delay(500); + yield put(getNewConnectionAction()); + } else { + console.log("in second"); + yield put(setConnectionStatus(false)); + } break; } } diff --git a/frontend/src/connectionstatus/ConnectionStatusBar.tsx b/frontend/src/connectionstatus/ConnectionStatusBar.tsx index 5fc0d49..b0e85f8 100644 --- a/frontend/src/connectionstatus/ConnectionStatusBar.tsx +++ b/frontend/src/connectionstatus/ConnectionStatusBar.tsx @@ -20,7 +20,7 @@ const useStyles = makeStyles((theme: Theme) => ); interface StateProps { - connected: boolean; + connected: boolean | null; } export type Props = StateProps; @@ -33,7 +33,7 @@ export function ConnectionStatusBar( <div className={classes.root}> <AppBar position="static" color="default"> <Toolbar> - <Typography variant="h6" className={classes.title}> + <Typography style={{color: props.connected ? 'primary' : 'red'}} variant="h6" className={classes.title}> {props.connected ? "Connected to server" : "Lost connection to server"} diff --git a/frontend/src/connectionstatus/ConnectionStatusSlice.ts b/frontend/src/connectionstatus/ConnectionStatusSlice.ts index 1f96414..8d60bba 100644 --- a/frontend/src/connectionstatus/ConnectionStatusSlice.ts +++ b/frontend/src/connectionstatus/ConnectionStatusSlice.ts @@ -2,11 +2,11 @@ import { createSlice, PayloadAction } from "@reduxjs/toolkit"; import { RootState } from "../store/store"; export interface ConnectionStatusState { - connected: boolean; + connected: boolean | null; } export const initialState: ConnectionStatusState = { - connected: false, + connected: null, }; export type ConnectionStatusAction = PayloadAction<boolean>; diff --git a/frontend/src/store/store.ts b/frontend/src/store/store.ts index 38f9b54..ddb0887 100644 --- a/frontend/src/store/store.ts +++ b/frontend/src/store/store.ts @@ -5,17 +5,14 @@ import PlayerStateReducer from "../player/PlayerSlice"; import ConnectionStatusStateReducer from "../connectionstatus/ConnectionStatusSlice"; import UrlReducer from "../url/UrlSlice"; -import rootSaga from "../backendconnection/communication"; +import rootSaga, { getNewConnectionAction } from "../backendconnection/communication"; import createSagaMiddleware from "redux-saga"; -import { connect } from "@giantmachines/redux-websocket"; - // Create the websocket instance. const reduxWebsocketMiddleware = reduxWebsocket({ reconnectInterval: 1000, reconnectOnClose: true, - dateSerializer: (date: Date) => "haha", }); // See https://github.com/giantmachines/redux-websocket // and https://www.npmjs.com/package/@giantmachines/redux-websocket @@ -39,6 +36,7 @@ export const store = configureStore({ serializableCheck: { // Ignore these action types ignoredActions: [ + /* "REDUX_WEBSOCKET::CONNECT", "REDUX_WEBSOCKET::CLOSED", "REDUX_WEBSOCKET::ERROR", @@ -49,6 +47,7 @@ export const store = configureStore({ "REDUX_WEBSOCKET::OPEN", "REDUX_WEBSOCKET::MESSAGE", "REDUX_WEBSOCKET::SEND", + */ ], }, }), @@ -57,7 +56,7 @@ export const store = configureStore({ ], }); -store.dispatch(connect("wss://mpvsync.de:8432/")); +store.dispatch(getNewConnectionAction()); sagaMiddleware.run(rootSaga); export type RootState = ReturnType<typeof store.getState>; -- GitLab