サーバーにファイルをアップロードしてファイルを処理するためのアップロードページを持つ MVC Web アプリケーションがあります。処理には時間がかかる場合があるため (10 ~ 30 分)、進行状況バーを使用して完了率を表示します。
このページには、SignalR を初期化する次のコードがあります。
// Define functions to facilitate push from the server.
m_uploadHub = $.connection.importDataHub;
$.extend(m_uploadHub.client, {
updateProgress: function (pct) {
progressbar.progressbar("value", pct);
},
updateStatus: function (status) {
$("#status").html(status);
},
updateProgressBarText: function (text) {
progressLabel.text(text);
},
complete: function () {
// no
}
});
try {
$.connection.hub.start().done(function () {
// Set connection id to hidden field
$('#SignalRConnectionId').val($.connection.hub.id);
});
}
catch (e) {
alert('SignalR hub start fail: ' + e);
}
つまり、ページが読み込まれると、上記の JavaScript コードが実行され、SignalR が開始され、停止することはありません。
この設計は正しいですか、それともユーザーがアップロード ボタンをクリックして実際にファイルをアップロードする場合にのみ$.connection.hub.start()を使用する必要がありますか? また、MVC アクションが戻ったときに$.connection.hub.stop()
で接続を停止する必要がありますか? (ファイルが正常にアップロードされたか、いくつかのエラー/警告が返されました)
ご意見をお聞かせください。