如何将signalR实现到通过后端服务连接的两个项目

时间:2016-11-02 10:36:17

标签: c# asp.net signalr asp.net-web-api2

通过实时通知为Web和移动设备开发消息传递应用程序。项目流程是......

  • 后端 - DataBaseOperations和服务
  • 网络
  • APi(适用于移动应用)

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

Web和API单独工作并访问Backend。请分享建议我应该使用哪些流程在我的项目中实现singalR

2 个答案:

答案 0 :(得分:2)

这是一个广泛的问题,但我会给予足够的帮助,让你开始朝着正确的方向前进。由于您将处于负载平衡环境中,您需要实现背板。它位于Web服务器后面并聚合消息传递。以下是一些指导您设置SignalR的链接:

另外,你需要这些nuget包(最低):

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

答案 1 :(得分:2)

你想要达到的目标没有什么特别之处。 在发送SignalR消息之前,您的客户端应用程序需要进行身份验证。这样,您就可以识别用户并保护您的服务器资源。 这是我开始研究的第一部分(如果你谷歌的话,有很多关于这个问题的信息)。

然后,您需要从服务器向用户发送消息,并且该用户可以连接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为您创建它们。 然后你只需要向该组发送一条消息,所有连接的客户端都将获得它。

  

如果你刚开始使用SignalR,我会使实施backpane的事情复杂化,除非你真的需要它并且你知道你在做什么。单个服务器可以处理数百个并发连接,如果需要,可以稍后扩展。

关于体系结构, Web和API单独工作的含义并不十分清楚。如果在实际尝试编写代码后提出更具体的问题,那就更好了。