Я пытаюсь отправить действие для перезагрузки страницы после того, как получаю сообщение, сгенерированное в формате 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);
};