【问题标题】:Using SignalR to notify clients when scheduled events occur使用 SignalR 在计划事件发生时通知客户端
【发布时间】:2014-12-21 01:45:47
【问题描述】:

我正在开发一个显示当前人员配置数据的 ASP.NET MVC 5 应用程序,并在人员配置发生变化时使用 SignalR 通知连接的客户端。这对于实时事件非常有用(“我现在需要下班。”),但现在我需要处理预定的事件,这些事件将来会发生人员变动。

也就是说,一个事件可能会在 3 小时 27 分钟后发生(“我需要在下午 4 点下班”)甚至是 3 个月后发生。事件发生时,应通知已连接的客户端,以便向最终用户显示正确的人员配备数据。当然,未来可能会发生变化,解决方案需要考虑取消或修改已安排的活动。

我很想找到一种干净的方法来做到这一点,它不涉及从客户端频繁轮询以了解即将发生的事件、服务器端休眠的线程等。

【问题讨论】:

  • 如何创建服务器端计划作业。然后,服务器可以调用 signalR 集线器将通知推送到客户端。 Quartz.NET 适合这类事情
  • ^ 上面推荐。似乎您正试图将调度工作放在您的网络服务器上,这不应该存在。使用单独的任务/调度程序来完成工作,并且可能在触发事件的集线器方法上使用[Authorize],以确保只有调度程序可以调用它们。客户端将只能接收事件。

标签: asp.net-mvc signalr


【解决方案1】:

我将创建一个负责调度的小型 Windows 服务。然后使用服务总线向 Web 服务器发送信号,例如

http://ayende.com/blog/3752/rhino-service-bus

在网络服务器上你可以使用https://github.com/AndersMalmgren/SignalR.EventAggregatorProxy 将消息直接转发给客户端

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-08
    • 2020-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多