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

本文关键字:服务器 启动 何停止 | 更新日期: 2023-09-27 18:13:24

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

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

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

它将只在一段时间内被激活,管理员将"允许该功能"。

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

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

** EDIT **

下面的答案(对此我很感激),我认为我没有把问题问清楚。

我不确定集线器"服务器"如何启动和停止。与Visual Studio中的抽象(即只是添加一个SignalR类),我无法找出如何处置集线器,然后重新启动它(创建它的实例)

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

您可以使用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/signalR/hubs时,页面会显示一些"此站点无法访问"的内容。

但是为什么要停止集线器"server"呢?最好顺其自然……并在服务器端施加午餐时间限制。