Signalr 如何在信号机中停止轮询?

Signalr 如何在信号机中停止轮询?,signalr,Signalr,有没有办法停止Signal中的轮询服务器?如果发生错误,我想停止轮询服务器。轮询集线器是通过$.connection.hub.start()启动的,因此我假设可以通过$.connection.hub.stop()或类似的方式停止轮询集线器。但它似乎不起作用,即使在调用stop()之后,轮询仍在继续。有没有其他方法可以停止轮询 <script type="text/javascript"> var chatHub = $.connection.chatHub; var conne

有没有办法停止Signal中的轮询服务器?如果发生错误,我想停止轮询服务器。轮询集线器是通过
$.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>

var chatHub=$.connection.chatHub;
var connection=$.connection.hub;
chatHub.addMessage=函数(消息){
$(“#消息”).append(“
  • ”+消息+”
  • ”); }; 连接错误(函数错误){ $(“#消息”).append(“
  • ”+”连接错误:关闭连接“+”
  • ”); connection.stop();//这似乎不起作用 }); connection.start();
    首先,您确定有必要吗?如果发生通信错误,显然您希望重试

    但是,我查看了源代码,我的意思是,特别是在错误处理程序中,不可能调用
    .stop()
    命令。它分别没有效果,因为在处理程序函数完成后,通信会在两秒钟后自动重新初始化

    参见jquery.signalR.js(第340行):

    我发现了一个解决方法:在处理程序函数中引发异常,导致轮询未重新初始化:

    connection.error(function (error) { //$.connection.hub.error()
      $('#messages').append('<li>' + "error connecting: closing connnection" + '</li>');
      throw "Close SignalR connection";
    });
    
    connection.error(函数(error){/$.connection.hub.error()
    $(“#消息”).append(“
  • ”+”连接错误:关闭连接“+”
  • ”); 抛出“关闭信号机连接”; });
    如果使用集线器,可以停止集线器的连接:

    $.connection.hub.stop();
    

    该语法是否已更改为$.connection.hub.connection.stop()?对我来说就这些了,没有。这并没有明显改变我的错误,很抱歉浪费了你们的时间,现在是时候让我来读一下在特定集线器上停止连接,$.connection.myHub.stop()和更高版本之间的区别了。有什么想法,但我想我会设置一个沙盒,这样我就知道了。集线器共享一个连接。如果你不使用集线器,这是否意味着它无法完成?
    $.connection.hub.stop();