我有一个 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()的连接吗?(文件上传成功或返回一些错误/警告)
请指教。