繁体   English   中英

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

[英]SignalR How to Stop and Start the “Server”

抱歉,如果您之前已经回答过这个问题,或者是个愚蠢的问题,我深表歉意。

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

我已经查看了SignalR,就其使用情况而言,它看起来很不错,但是我不希望它一直处于活动状态。

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

想像一下一个商务Web应用程序,它也具有聊天选项,但是仅在午餐时间允许聊天选项。

我不希望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集线器“服务器”,则将浏览器指向localhost:12345 / signalr / hubs时,页面将显示一些内容“无法访问此站点”。

但是,为什么要停止中心“服务器”? 最好让它运行...,并在您的午餐时间限制服务器端使用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM