【问题标题】:Using SignalR with CQRS and Event Sourcing将 SignalR 与 CQRS 和事件溯源一起使用
【发布时间】:2016-02-20 07:22:24
【问题描述】:

我将 CQRS 与 EventSourcing 结合使用。 当所有打开的浏览器中引发特定事件时,我必须使用 SignalR 更新网格。 因此,一旦引发特定事件,我必须将数据推送给所有客户端。

目前,当用户手动刷新页面时,会触发查询,该查询正在拉取数据,但我必须使用 SignalR 在不手动刷新的情况下拉取数据。 我是 SignalR 的新手,我可以获得任何示例代码/参考来实现相同的功能吗?

【问题讨论】:

    标签: c# signalr cqrs signalr-hub event-sourcing


    【解决方案1】:

    你可以阅读this article关于这个话题。

    还有一个public repository,其中包含一些 CQRS+ES 和 SignalR 的“基本实验”。

    希望对你有帮助

    【讨论】:

    • 我已经完成了您提供的解决方案,但是当我们更改 ChangeDescription 时,它并没有反映所有打开的浏览器,这是通过 signalr 预期的
    • 你是对的,但这是 DTO 映射中的一个错误,与 signalR 无关。 Now it's fixed。谢谢
    • 当然。我没有管理该事件(它是一个示例应用程序),但您可以在 console.log 中看到该事件已广播到所有连接的客户端。
    • 如果您更新解决方案或告诉我步骤将非常感激以便广播所有事件并相应更新所有浏览器上的所有值。我已经尝试在我现有的项目中使用它,但我遇到了以下异常“[HttpException]:找不到路径的控制器或没有实现 IController。”
    • 你好像错过了owin package。 SignalR 是作为 OWIN 模块实现的,所以你需要它来正确启动 SignalR
    【解决方案2】:

    首先,您必须创建一个Hub 类,以便客户端可以连接。

    然后,在您的事件处理程序中执行以下操作:

    var hubContext = GlobalHost.ConnectionManager.GetHubContext<YourHub>(); hubContext.Clients.All.callJavaScriptFunction(parameters);

    这样,当事件处理程序被执行时,SignalR 将使用您提供的数据调用您想要的客户端方法。

    您还必须从客户端创建正确的连接并定义callJavaScriptFunction

    注意:如果您使用依赖注入,您可能会看到来自GlobalHost 的非常不稳定的行为。如果是这样,请告诉我。

    希望这会有所帮助!

    祝你好运!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-31
      • 2013-06-18
      • 2018-11-15
      • 2019-09-22
      • 1970-01-01
      • 2018-04-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多