Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在信号机中,是否可以模拟重新连接以进行测试?_C#_Asp.net_Signalr - Fatal编程技术网

C# 在信号机中,是否可以模拟重新连接以进行测试?

C# 在信号机中,是否可以模拟重新连接以进行测试?,c#,asp.net,signalr,C#,Asp.net,Signalr,我知道,如果连接因任何原因失败,信号员会不断尝试重新连接。测试我的服务器和客户端对此的响应的最佳方法是什么?要测试服务器上的断开连接,请浏览到其他页面 要在客户端上测试断开连接:重置服务器(IISreset?)。为了让客户端尝试重新连接,您需要使用该方法配置。JavaScript代码如下所示: const connection = new signalR.HubConnectionBuilder() .withUrl(`${apiUrl}/subscribe/change`) .with

我知道,如果连接因任何原因失败,信号员会不断尝试重新连接。测试我的服务器和客户端对此的响应的最佳方法是什么?

要测试服务器上的断开连接,请浏览到其他页面


要在客户端上测试断开连接:重置服务器(IISreset?)。

为了让客户端尝试重新连接,您需要使用该方法配置。JavaScript代码如下所示:

const connection = new signalR.HubConnectionBuilder()
  .withUrl(`${apiUrl}/subscribe/change`)
  .withAutomaticReconnect()
  .build();
connection.onreconnecting(error => {
  console.log('Reconnecting interval', error);
});
一旦设置好,当连接丢失时,客户端将尝试重新连接

在内部,当信号器断开连接时,它调用
stopInternal
函数

如果您想进行一些手动测试,以确保您的处理程序被解雇,并且他们做了您期望他们做的事情。您可以将连接保存在
常量中
并自己触发事件

我所做的:

  • 创建了与上面代码类似的连接
  • 窗口中缓存连接
  • 打开浏览器控制台,单击左侧的三个点并导航到
    网络条件
  • 已将网络限制更新为脱机
  • 最后运行:
  • 我的重新连接处理程序开始启动。它默认运行4次。看起来是这样的:

    const connection = new signalR.HubConnectionBuilder()
      .withUrl(`${apiUrl}/subscribe/change`)
      .withAutomaticReconnect()
      .build();
    
    connection.onreconnecting(error => {
      console.log('Reconnecting interval', error);
    });
    
    注意:此策略仅用于开发和一些手动测试。我不建议在单元测试或集成测试中使用
    窗口
    对象


    类似的策略也可以通过将连接缓存在单元测试使用的一些内部变量上来实现。

    这些都是错误的。要在服务器关闭后测试重新连接,请使用iisreset。要模拟客户端连接断开(祝你好运),请拉网线:)那么,你的意思是。。。您真的需要两端来创建连接吗?你创造了信号器还是什么?!?啊,我明白了。。。你做到了低下头,慢慢向后走——这是一个很好的解决方案,但我的客户是一个UWP应用程序。我想知道我是否可以用防火墙做同样的事情?