Вопрос

Есть ли способ прекратить избирательный сервер в SignalR? Я хочу остановить сервер избирательного участка, если произойдет ошибка. Ответственные центры начинаются с $.connection.hub.start(), поэтому я предположил, что его можно остановить $.connection.hub.stop() или что-то вроде того. Но, похоже, это не работает, опросы продолжаются даже после вызова stop(). Анкет Есть ли другой способ прекратить опросить?

<script type="text/javascript">

 var chatHub = $.connection.chatHub;
 var connection = $.connection.hub;

chatHub.addMessage = function (message) {
      $('#messages').append('<li>' + message + '</li>');
    };

connection.error(function (error) {
 $('#messages').append('<li>' + "error connecting: closing connnection" + '</li>');
    connection.stop(); //This doesn't seem to work   
        });

connection.start();

</script>
Это было полезно?

Решение

Если вы используете концентраторы, вы можете остановить соединение концентратора:

$.connection.hub.stop();

Другие советы

Во -первых, вы уверены, что это необходимо? Если возникает ошибка связи, очевидно, вы хотите повторить ее.

Тем не менее, я изучил исходный код, и я имею в виду, что особенно в обработке ошибок это невозможный звонок .stop() командование Соответственно, он не имеет никакого эффекта, потому что после завершения функции обработчика, чем общение автоматически повторно повторно переименовано через две секунды.

См. JQuery.signalr.js (строка 340):

$(instance).trigger("onError", [data]);

window.setTimeout(function () {
  poll(instance);
}, 2 * 1000);

Я нашел один обходной путь: в функции обработчика бросает исключение, что приводит к повторному опросу:

connection.error(function (error) { //$.connection.hub.error()
  $('#messages').append('<li>' + "error connecting: closing connnection" + '</li>');
  throw "Close SignalR connection";
});
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top