0.0.2 • Published 5 years ago

modul-signalr-client v0.0.2

Weekly downloads
3
License
MIT
Repository
gitlab
Last release
5 years ago

modul-signalr-client

Установка

yarn add modul-signalr-client

createSignalRMiddleware

Функция создаёт middleware для redux.

Параметры:

  • url - адрес подклчения к хабу.
  • comets - объект, ключами которого являются имена методов, а значениями - функции-обработчики с параметрами (dispatch, data), где dispatch- store.dispatch, а data - полученные с сервера данные.
  • transport - указание кастомных типов транспорта (необязательный параметр).
  • exitMethod - метод, вызов которого означает, что нужно отключить текущего клиента.
  • startActionType - тип action'а, после которого будет осуществлена попытка подключения к хабу.
  • connectedAction - action, который будет отправлен после успешного подключения.
  • log - функция логирования, принимает параметры (method, data), где method - имя вызванного сервером метода, data - полученные данные. По умолчанию - функция, выводящая в консоль имя метода и полученные данные.
  • reconnectTimeout - количество миллисекунд ожидания перед повторной попыткой подключения. Неположительное значение запрещает переподключение. По умолчанию 5000.
  • logLevel - уровень логирования (необязательный параметр).
  • onExit - функция принимающая store.dispatch и вызываемая при вызове exitMethod (см. выше)
  • onConnectionError - функция с параметрами (dispatch, error), вызываемая при провале попытки подключения к хабу.

Пример функции, возвращающей middleware

import { createSignalRMiddleware } from 'modul-signalr-client';
import * as notify from '../common/uiElements/Notify/actions';
import { startSignalR, signalRStarted } from '../common/actions/cometActions';

export const signalRMiddleware = comets => createSignalRMiddleware({
    url: '/api/intcomet/comet?context=sales',
    exitMethod: 'Exit',
    startActionType: startSignalR.toString(),
    connectedAction: signalRStarted,
    comets,
    onExit: dispatch => dispatch(
        notify.error(
            'Зафиксирован новый вход в систему под Вашей учётной записью',
            'Работа приостановлена',
            { autoDismiss: 0 },
        ),
    ),
    onConnectionError: (dispatch, err) => {
        console.error(err);
        dispatch(notify.error('Приложение работает в режиме ограниченной функциональности'));
    },
});