有什么方法可以停止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