[英]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.