Клиент SignalR в приложении React + Redux не подключен - PullRequest
0 голосов
/ 10 октября 2018

У меня есть концентратор SignalR, который я запускаю локально из службы Windows.Мое приложение React + Redux также работает локально и подключается к концентратору, и в настоящее время я использую его только для получения сообщений с сервера.

SignalR.js:

import { HUB_NAME, HUB_URL } from '../Constants/SignalRConstants';
import { setStarted, setStopped } from '../Actions/StartStopActions';

const $ = window.$;

export const signalRStart = (store, callback) => {
    let hub = $.connection[HUB_NAME];
    hub.client.statusChanged = status => {
        store.dispatch(status === 'Start' ? setStarted() : setStopped());
    };

    $.connection.hub.url = HUB_URL;
    $.connection.hub.start(() => callback());

    $.connection.hub.disconnected(() => {
        window.alert('signalr disconnected');
        if ($.connection.hub.lastError) {
            alert('Disconnected. Reason: ' + $.connection.hub.lastError.message);
        }
        signalRStart(store, callback);
    });
};

store.js:

import { createStore, compose } from 'redux';
import { Middleware, SignalR } from 'app-shared';
import rootReducer from '../Reducers/rootReducer';

const savedState = sessionStorage.store ? JSON.parse(sessionStorage.store) : {};

const store = createStore(rootReducer, savedState, compose(Middleware.customMiddleware));

SignalR.signalRStart(store, () => {});

store.subscribe(() => {
    sessionStorage.store = JSON.stringify(store.getState());
});

export default store;

Работает некоторое время, но в конечном итоге отключается и остается отключенным.Я не думаю, что концентратор является проблемой, так как другие клиенты не испытывают проблем с тем, чтобы оставаться на связи / автоматически переподключаться.Я предполагаю, что в моей реализации есть какой-то недостаток, но я не вижу ничего явно неправильного.Я добавил несколько предупреждений для мониторинга, когда он отключается.Похоже, что нет ошибок.

...