私は SignalR を初めて使用し、実行時間の長い結果プーリングを実装しようとしています。ASP.NET MVC アプリに JS を追加し、バグ クラスを作成しました。
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));
}
}
}
コードは問題なく動作しますが、問題が 1 つあります。同じユーザーが Web ページを更新するたびに、新しい Hub クラスが作成され、新しい longRunningMethod メソッドが実行されます。接続を再開して同じハブ インスタンスにアタッチし、メッセージの受信を再開したいと考えています。誰かがこれを実装する方法を説明できますか?