如果之前已经回答过或者是一个愚蠢的问题,我道歉。
我有一个Web应用程序(.NET MVC c#),它可以执行许多不同的功能。我想添加一个可以利用websockets的新功能
我已经查看了SignalR,它在我的使用场景中看起来很好,但是它一直处于活动状态,但是我不希望它一直处于活动状态。
它只会在一段时间内处于活动状态,管理员将“允许该功能”。
想象一个商业网络应用程序,它也有一个聊天选项,但聊天选项只允许在午休时间。
我不希望SignalR在后台运行90%的时间它不会被使用,所以我该如何阻止它或创建一个新的Hub实例?
**编辑**
根据下面的答案(我很感激),我认为我没有明确提出问题。
我不确定集线器“服务器”是如何启动和停止的。使用Visual Studio中的抽象(即只添加一个SignalR类),我无法解决如何处理Hub然后重新启动它(创建它的实例)
您可以使用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();
您可以像停止webAPI服务器,WCF服务器或Web服务器上运行的任何Web应用程序一样停止集线器“服务器”;在服务器上禁用它。
随着Visual Studio的抽象,它仍然在IIS Express下运行 - 如果你停止你的signalR hub“服务器”运行,当你将你的浏览器指向它localhost:12345 / signalsr / hubs时,页面会说出一些内容。 “无法访问此站点”。
但是你为什么要停止集线器“服务器”呢?最好让它运行...并强加你的午餐时间限制服务器端。