我有一个MVC web应用程序,它有一个上传页面,可以将文件上传到服务器并处理该文件。因为处理可能需要一些时间(10到30分钟),所以我使用一个进度条来显示% complete。
在这个页面上,我有下面的代码来初始化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()的连接?(文件已成功上载或返回了一些错误/警告)
请指点。
发布于 2013-05-31 18:01:34
启动和停止SignalR连接可以使用多种方法。但是,我认为立即启动SignalR连接并永不停止这一点要常见得多。
在您的情况下,取决于“如果”您希望在点击/完成上传之前/之后使用SignalR连接,您可能需要采取不同的方法。
如果您真的不使用SignalR连接,除非用户单击“上载”,则只应在单击“上载”按钮时启动它。如果您在上传完成后不会使用SignalR连接,一定要停止它。如果您不使用它,就不需要让服务器一直使用它。
要解决一个稍微不同的问题(由@Steve提出):如果您在应用程序中只使用SignalR,那么这可能是过火了。
https://stackoverflow.com/questions/16854493
复制相似问题