Как сделать так, чтобы события не терялись при использовании SignalR - PullRequest
0 голосов
/ 04 августа 2020

Я использую SignarR для панели управления менеджером по продажам. Панель управления показывает супервизору, какой продавец звонит, и позволяет ему использовать функции в связи с этим. Он будет использоваться группой примерно из 100 продавцов и 10 разных руководителей.

Серверная часть - это AspnetCore 3.1, внешняя часть - обычный html / javascript.

В целом, SignalR работает нормально. Вкратце, различные действия, предпринимаемые CSR (например, запуск вызова), передаются концентратору, а затем транслируются соответствующему супервизору. Все это работает нормально - большую часть времени .

Проблема в том, что иногда события теряются. Например, событие для начала телефонного звонка никогда не принимается сервером, поэтому создается впечатление, что продавец не разговаривает по телефону, хотя на самом деле это так.

Или иногда событие завершения вызова будет не стрелять, а потом оказывается, что они разговаривают по телефону, когда их нет. Это происходит только в 2-3% случаев, но этого достаточно, чтобы вызвать проблемы.

Так что я ищу способы повысить точность событий, чтобы довести ее до 100%. У меня было две идеи:

  1. После того, как событие было получено сервером, отправьте «Подтверждение» обратно клиенту. Затем на клиенте, если он не получает подтверждение, запустить событие снова.

  2. Запустить «поток» событий на сервер. Так, например, если пользователь начинает телефонный звонок, отправьте это событие на сервер. Затем продолжайте посылать это же событие на сервер, пока телефонный звонок не завершится. Затем отправляйте событие HungUp несколько раз, пока не произойдет какое-то новое событие.

Или должен SignalR иметь возможность получать события на 100%?

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

1 Ответ

1 голос
/ 06 августа 2020

Я еще не получил никакого ответа по этому поводу, поэтому я собираюсь отметить, что я сделал, что, похоже, работает до сих пор. .

Реализовано подтверждение приема-передачи. Таким образом, после того, как сервер получает событие, он отправляет подтверждение отправляющему клиенту. Если клиент не получает этого в течение двух секунд, он повторно публикует событие.

Пока все хорошо. Я обновлю позже, когда он немного запекется.

...