SignalR如何停止和启动“服务器”

问题描述 投票:0回答:2

如果之前已经回答过或者是一个愚蠢的问题,我道歉。

我有一个Web应用程序(.NET MVC c#),它可以执行许多不同的功能。我想添加一个可以利用websockets的新功能

我已经查看了SignalR,它在我的使用场景中看起来很好,但是它一直处于活动状态,但是我不希望它一直处于活动状态。

它只会在一段时间内处于活动状态,管理员将“允许该功能”。

想象一个商业网络应用程序,它也有一个聊天选项,但聊天选项只允许在午休时间。

我不希望SignalR在后台运行90%的时间它不会被使用,所以我该如何阻止它或创建一个新的Hub实例?

**编辑**

根据下面的答案(我很感激),我认为我没有明确提出问题。

我不确定集线器“服务器”是如何启动和停止的。使用Visual Studio中的抽象(即只添加一个SignalR类),我无法解决如何处理Hub然后重新启动它(创建它的实例)

c# asp.net asp.net-mvc signalr signalr-hub
2个回答
2
投票

您可以使用setTimeout JavaScript函数,在页面加载,获取当前时间,计算差异直到午休时间,并为其启动另一个启动集线器的功能。

Example:

<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();

0
投票

您可以像停止webAPI服务器,WCF服务器或Web服务器上运行的任何Web应用程序一样停止集线器“服务器”;在服务器上禁用它。

随着Visual Studio的抽象,它仍然在IIS Express下运行 - 如果你停止你的signalR hub“服务器”运行,当你将你的浏览器指向它localhost:12345 / signalsr / hubs时,页面会说出一些内容。 “无法访问此站点”。

但是你为什么要停止集线器“服务器”呢?最好让它运行...并强加你的午餐时间限制服务器端。

© www.soinside.com 2019 - 2024. All rights reserved.