Pet*_*Lea 2 azure signalr signalr-backplane
我目前在Azure网站上使用signalR,只有一个实例将数据推送到客户端.没问题.
我们将项目拆分为单独的web/worker和wcf角色,以便我们可以独立扩展它们.
该网站将这样工作.
情景A.
用户将一些数据提交给Web角色,并将其放入为工作人员A准备的服务总线队列中,向工作人员A发送一条消息,表明已经添加了一个新项目,以防其闲置(以保存轮询).当工作人员A处理它时,将消息发送回Web角色,这些角色会推送到特定客户端.
方案B.
以wcf角色接收数据并将其放入为工作人员B准备好的不同服务总线队列中,wcf角色向工作人员B发送消息,表示已经添加了新项目以防空闲.当工作人员B处理它时,向Web角色发送消息并将其推送给特定客户端.
在下面说明:

我将为用户启用用于Web角色的signalR服务总线背板.我不确定的是如何让我的角色在彼此之间进行沟通.
我需要:
web role =>工人A.
工人A =>网络角色
wcf role =>工人B
工人B =>网络角色
我是否在Web上创建了集线器,工作者A和工作者B都有服务总线主题?然后以某种方式与signalr .net客户端连接?如何在不公开公开的情况下确保它适用于所有Web角色实例?
出于某种原因,数百个客户端通过JavaScript连接到我的Web角色中心似乎很简单,但尝试连接一些内部的客户端,我无法弄明白.
如果有人感兴趣...我最终做的是这样的:
我在Web和Wcf角色上创建了集线器.Web角色有一个连接,允许/ signalr和web和wcf角色的javascript代理有一个不在/ signalr-internal的.
我使用Azure Service Bus作为背板,让它自动处理web和wcf集线器,无需额外的修补.
在signalR身份验证中,我探测了连接的来源(即内部端点或外部ssl端点和拒绝/允许基于此访问特定集线器.这使我能够在我的工作人员上使用.net信号器客户端自动连接/重新连接等
这最终工作得很好,没有任何问题,实现起来很简单.如果我遇到任何问题,我会更新.
编辑#1:
不要使用这种方法!一切都运作良好,直到你真正将它部署到一个现场环境,然后你得到一些问题,让我想把我的头发撕掉.
我实际上最终做的事情(完全在现场工作)是使用服务总线主题并为听众创建订阅.这将创建TCP连接,并允许您的通信在内部保持100%,没有任何疯狂的传输或边界问题.
编辑#2:
自从这篇文章发布以来,事件中心被释放,我们切换了,从未回头.见最后评论
| 归档时间: |
|
| 查看次数: |
730 次 |
| 最近记录: |