Frage

Gibt es eine Möglichkeit, den Polling -Server in SignalR zu stoppen? Ich möchte den Umfragserver stoppen, wenn ein Fehler auftritt. Polling -Hubs werden mit gestartet $.connection.hub.start(), Also nahm ich an, dass es mit gestoppt werden könnte $.connection.hub.stop() oder sowas ähnliches. Aber es scheint nicht zu funktionieren, die Umfragen dauern auch nach dem Anruf fort stop(). Gibt es eine andere Möglichkeit, Pollling aufzuhören?

<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>
War es hilfreich?

Lösung

Wenn Sie Hubs verwenden, können Sie die Verbindung des Hubs stoppen:

$.connection.hub.stop();

Andere Tipps

Sind Sie zunächst sicher, dass es notwendig ist? Wenn Kommunikationsfehler auftritt als offensichtlich, möchten Sie ihn wiederholen.

Ich habe mich jedoch mit dem Quellcode befasst und ich meine, dass es nicht möglich ist .stop() Befehl. Es hat keine Auswirkung, da nach Abschluss der Handler -Funktion automatisch zwei Sekunden lang automatisch neu initialisiert wird.

Siehe jQuery.Signalr.js (Zeile 340):

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

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

Ich fand eine Problemumgehung: In Handler -Funktion werfen Sie eine Ausnahme, die dazu führt, dass die Umfrage nicht wieder initialisiert wird:

connection.error(function (error) { //$.connection.hub.error()
  $('#messages').append('<li>' + "error connecting: closing connnection" + '</li>');
  throw "Close SignalR connection";
});
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top