Действие отправки на получение сообщения от сигнала r в промежуточном программном обеспечении - PullRequest
0 голосов
/ 29 мая 2019

Я пытаюсь отправить действие для перезагрузки страницы после того, как получаю сообщение, сгенерированное в формате pdf, через signalr.

Я взял отсюда пример промежуточного программного обеспечения:

Я просто не могувыясните, как отправить действие «PDF_GENERATED» после получения сообщения pdfcomplete здесь: Где разместить концентратор SignalR в приложении React / Redux?

connection.on('pdfComplete', (planId) => {
            alert(planId);
            //dispacth repair plan update
        });
const startSignalRConnection = connection => connection.start()
    .then(() => console.info('SignalR Connected'))
    .catch(err => console.error('SignalR Connection Error: ', err));

const signalRMiddleware = ({ getState }) => next => async (action) => {
    // register signalR after the user logged in
    if (action.type === 'RESPONSE_GET_USER_INFO') {

        var urlRoot = (window.appConfig || {}).URL_ROOT;
        if (typeof window !== 'undefined') {
            urlRoot = window.location.origin.toString();
        }
        const connectionHub = `${urlRoot}/SigRGeneratedPdf`;

        const protocol = new JsonHubProtocol();

        // let transport to fall back to to LongPolling if it needs to
        const transport = HttpTransportType.WebSockets | HttpTransportType.LongPolling;

        const options = {
            transport,
            logMessageContent: true,
            logger: LogLevel.Trace,
            accessTokenFactory: () => this.loginToken
        };

        // create the connection instance
        const connection = new HubConnectionBuilder()
            .withUrl(connectionHub, options)
            .withHubProtocol(protocol)
            .build();

        // event handlers, you can use these to dispatch actions to update your Redux store
        connection.on('pdfComplete', (planId) => {
            alert(planId);
            //dispacth repair plan update
        });

        // re-establish the connection if connection dropped
        connection.onclose(() => setTimeout(startSignalRConnection(connection), 5000));

        startSignalRConnection(connection);
    }

    return next(action);
};
...