Domanda

C'è un modo per fermare server di polling in SignalR? Voglio smettere di polling del server in caso di errore. hub polling è iniziato con $.connection.hub.start(), così ho pensato che potesse essere fermato con $.connection.hub.stop() o qualcosa di simile. Ma non sembra funzionare, polling continua anche dopo aver chiamato stop(). C'è un altro modo per fermare pollling?

<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>
È stato utile?

Soluzione

Se stai usando hub si può fermare il collegamento del mozzo:

$.connection.hub.stop();

Altri suggerimenti

In primo luogo sono sicuro che è necessario? Se si verifica un errore di comunicazione che, ovviamente, si vuole riprovare.

Comunque, ho guardato nel codice sorgente e voglio dire che soprattutto nel gestore degli errori non è possibile il comando di chiamata .stop(). Rispettivamente non ha effetto perché dopo funzione di gestione è terminata che la comunicazione viene reinizializzato automaticamente due secondi dopo.

See jquery.signalR.js (linea 340):

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

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

Ho trovato una soluzione: In funzione del gestore di un'eccezione, che causano tale sondaggio non viene reinizializzata:

connection.error(function (error) { //$.connection.hub.error()
  $('#messages').append('<li>' + "error connecting: closing connnection" + '</li>');
  throw "Close SignalR connection";
});
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top