SignalR Hub方法即使在浏览器关闭后也会继续运行

时间:2014-08-20 15:26:46

标签: c# visual-studio-2012 signalr

我有一个循环一系列元素的方法,并将一些东西添加到数据库中。我正在使用SignalR将这种情况的实时进度从服务器发布到客户端。一切正常。

但是,当我关闭浏览器和/或点击“停止调试”按钮时,该方法会在后台继续运行!我可以说,因为当我查询数据库时,它仍然在添加记录,当我启动项目时,它会立即触发任何服务器端断点 - 即使在启动时没有调用此方法。

如果我运行代码

for(int i=0;i<1000;i++) {
     do stuff with i
}

然后在中途停止,我希望它会停止。但SignalR似乎一直持续到1000,即使我已经停止并关闭了浏览器。

1 个答案:

答案 0 :(得分:0)

SignalR是一个实时通信框架,这意味着它不像Web浏览器启动请求的HTTP请求,服务器接收请求,客户端等待服务器处理请求并发送请求,以及最后关闭连接(HTTP是无状态协议)。

如果在服务器端执行某些操作时关闭Web浏览器并且此操作是使用SignalR启动的,则操作不会结束。您需要在服务器执行长时间运行操作时从服务器发送心跳,并且如果某些心跳未通过客户端,您的服务器代码将取消它。

Heartbeats 就像 ping 。它只是在时间间隔内从客户端发送 hello 并发出我在这里!消息。