题
有什么方法可以停止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";
});
不隶属于 StackOverflow