我是 SignalR 的新手,正在尝试实现长期运行的结果池。我已将 JS 添加到我的 ASP.NET MVC 应用程序并创建了错误类。
JS
<script type="text/javascript">
var message= $.connection.messageHub;
$(function () {
message.addMessage = function (htmlstring) {
alert(htmlstring);
};
$.connection.hub.start(function () {
message.longRunningMethod('@HttpContext.Current.Session.SessionID');
});
});
</script>
c# 代码
[HubName("messageHub")]
public class MessagesHub : Hub
{
public void longRunningMethod(string sessionId)
{
var repeatChecking = 0;
while (repeatChecking < 3000000)
{
Caller.addMessage("Test");
repeatChecking++;
Thread.Sleep(TimeSpan.FromSeconds(1));
}
}
}
代码工作正常,但有一个问题。每次同一用户刷新网页时,都会创建新的 Hub 类并执行新的 longRunningMethod 方法。我想恢复连接并附加到同一个集线器实例并恢复接收消息。谁能解释如何实现这一点?