如果之前已经回答过,或者是一个愚蠢的问题,我道歉。
我有一个Web应用程序(.NET MVC c#),它可以执行许多不同的功能。我想添加一个可以使用websockets的新功能
我已经查看了SignalR,它在使用场景时看起来很好,但是我不希望它一直处于活动状态。
它只会在一段时间内处于活动状态,管理员将允许该功能"。
想象一个商业网络应用程序也有聊天选项,但只有在午休时才允许聊天选项。
我不希望SignalR在后台运行90%的时间不会被使用,所以如何停止它或创建Hub的新实例?
**编辑**
按照下面的答案(我很感激),我不认为我提出了明确的问题。
我不确定集线器"服务器"开始和停止。使用Visual Studio中的抽象(即只添加一个SignalR类),我无法解决如何处理Hub然后重新启动它(创建它的实例)
答案 0 :(得分:2)
你可以使用setTimeout
JavaScript函数,在页面加载时,获取当前时间,计算午休前的差异,并为其启动另一个启动集线器的函数。
<script>
$(function(){
var currentTime = new Date();
var lunchTime = ....
var timeRemaining = ...
var lunchEndTime = ...
setTimeout(startHubConnection(),timeRemaining);
setTimeout(stopHubConnection(),lunchEndTime );
});
function startHubConnection(){
$.connection.hub.start().done(function () {
//do whatever neccessary here
});
function stopHubConnection(){
$.connection.hub.stop();
}
</script>
在服务器端,如果时间不在允许的休息时间内,请在集线器中进行额外的检查
Clients.Client(Context.ConnectionId).serverOrderedDisconnect();
答案 1 :(得分:0)
您将以停止WebAPI服务器,WCF服务器或在Web服务器上运行的任何Web应用程序的相同方式停止中心“服务器”;在服务器上禁用它。
通过Visual Studio的抽象,它仍在IIS Express下运行-如果停止运行signalR集线器“服务器”,则将浏览器指向localhost:12345 / signalr / hubs时,页面将显示一些内容遵循“无法访问此站点”的字样。
但是您为什么要停止中心“服务器”?最好让它运行...并在您的午餐时间限制服务器端使用。