Question

Yat-il un moyen d'arrêter le serveur de vote SignalR? Je veux arrêter le serveur de vote en cas d'erreur. centres de vote est commencé avec $.connection.hub.start(), donc je suppose qu'il pourrait être arrêté avec $.connection.hub.stop() ou quelque chose comme ça. Mais il ne semble pas au travail, le scrutin se poursuit même après avoir appelé stop(). Y at-il une autre façon d'arrêter 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>
Était-ce utile?

La solution

Si vous utilisez hubs vous pouvez arrêter la connexion du concentrateur:

$.connection.hub.stop();

Autres conseils

Tout d'abord vous sûr est-il nécessaire? Si l'erreur de communication se produit que de toute évidence vous voulez retenter.

Cependant, je regardais dans le code source et je veux dire que, notamment dans gestionnaire d'erreurs, il n'est pas possible commande appel .stop(). Respectivement, il n'a pas d'effet parce qu'après fonction de gestionnaire est terminée que la communication est automatiquement réinitialisé après deux secondes.

Voir jquery.signalR.js (ligne 340):

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

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

J'ai trouvé une solution de contournement: En fonction de gestionnaire jeter une exception, ce qui cause ce sondage n'est pas réinitialisée:

connection.error(function (error) { //$.connection.hub.error()
  $('#messages').append('<li>' + "error connecting: closing connnection" + '</li>');
  throw "Close SignalR connection";
});
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top