我有一個MVC的Web應用程序,它有一個上傳頁面上傳文件到服務器並處理文件。由於處理過程可能需要一些時間(10到30分鐘),因此我使用進度條顯示完成百分比。何時使用SignalR啓動和停止?
在這個頁面上我有下面的代碼初始化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()的連接嗎? (文件上傳成功或返回一些錯誤/警告)
請指教。
我不知道你爲什麼使用SignalR,這似乎有點矯枉過正。像plupload這樣的上傳器:http://www.plupload.com/具有構建它的進度功能,並且使用起來更容易。 – Steve