如何对通过后端服务连接的两个项目实施 signalR
How to implement signalR to two projects connected through backend service
开发具有实时通知功能的 Web 和移动消息传递应用程序。项目流程是..
- 后端 - DataBaseOperations 和服务
- 网络
- APi(移动应用)
我需要从服务器向可以从多个位置(网络和移动应用程序)连接的用户发送消息。
Web 和 API 分开工作并访问后端。请分享我应该使用什么流程在我的项目中实施 singalR 的建议
这是一个宽泛的问题,但我会提供足够的信息让您从正确的方向开始。由于您将处于负载平衡环境中,您需要实施背板。它位于您的网络服务器后面并聚合消息。以下是一些指导您设置 SignalR 的链接:
- https://www.asp.net/signalr/overview/guide-to-the-api
- https://www.asp.net/signalr/overview/guide-to-the-api/hubs-api-guide-javascript-client
- https://www.asp.net/signalr/overview/performance/scaleout-in-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 分开工作 的意思不是很清楚。最好在实际尝试编写代码后问更具体的问题。
开发具有实时通知功能的 Web 和移动消息传递应用程序。项目流程是..
- 后端 - DataBaseOperations 和服务
- 网络
- APi(移动应用)
我需要从服务器向可以从多个位置(网络和移动应用程序)连接的用户发送消息。
Web 和 API 分开工作并访问后端。请分享我应该使用什么流程在我的项目中实施 singalR 的建议
这是一个宽泛的问题,但我会提供足够的信息让您从正确的方向开始。由于您将处于负载平衡环境中,您需要实施背板。它位于您的网络服务器后面并聚合消息。以下是一些指导您设置 SignalR 的链接:
- https://www.asp.net/signalr/overview/guide-to-the-api
- https://www.asp.net/signalr/overview/guide-to-the-api/hubs-api-guide-javascript-client
- https://www.asp.net/signalr/overview/performance/scaleout-in-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 分开工作 的意思不是很清楚。最好在实际尝试编写代码后问更具体的问题。