如何对通过后端服务连接的两个项目实施 signalR

How to implement signalR to two projects connected through backend service

开发具有实时通知功能的 Web 和移动消息传递应用程序。项目流程是..

我需要从服务器向可以从多个位置(网络和移动应用程序)连接的用户发送消息

Web 和 API 分开工作并访问后端。请分享我应该使用什么流程在我的项目中实施 singalR 的建议

这是一个宽泛的问题,但我会提供足够的信息让您从正确的方向开始。由于您将处于负载平衡环境中,您需要实施背板。它位于您的网络服务器后面并聚合消息。以下是一些指导您设置 SignalR 的链接:

此外,您将需要这些 nuget 包(最少):

  • Microsoft.AspNet.SignalR.Redis 或 SqlServer
  • Microsoft.AspNet.SignalR
  • Microsoft.Owin

你想要实现的目标没有什么特别的。 在发送 SignalR 消息之前,您的客户端应用程序需要经过身份验证。这样您就可以识别用户并保护您的服务器资源。 这是我要开始研究的第一部分(如果你 google 有大量关于此事的信息)。

然后您需要从服务器向用户发送一条消息,该用户可以连接 2 个客户端应用程序(Web 和移动设备,甚至更多,就像其他浏览器选项卡一样)。这可以使用 SignalR 组来实现。 SignalR 组只是一组具有给定名称的连接(不是用户)。 一种常见的情况是为每个用户创建一个组,该组将保存用户的连接。这是 SignalR 组如何工作的逻辑伪结构(不是实际代码):

Group name: "johnUser"
Group connections: [
    00001, // mobile app connection
    00002, // brower tab connection
    00003, // broswer tab connection 2
    0000n // etc
] 

这些数字是连接 ID 的模拟。 SignalR 为您创建它们。 然后你只需要向群组发送一条消息,所有连接的客户端都会收到它。

If you are just starting with SignalR I would not complicate things implenting a backpane unless you really need it and you know what you are doing. A single server can handle hundreds of concurrent connections and you can scale-out later if you want.

关于体系结构,您所说的 Web 和 API 分开工作 的意思不是很清楚。最好在实际尝试编写代码后问更具体的问题。