如何停止和启动“服务器”
本文关键字:服务器 启动 何停止 | 更新日期: 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"呢?最好顺其自然……并在服务器端施加午餐时间限制。