假设我们正在建设取决于几个独立的后端系统的SPA(单页应用程序)。基本上是SignalR-hub的微服务式实现。
这些后端系统中的每一个都公开了带有单独集线器的单独SignalR端点; 这些集线器在不同后端系统之间的分离是有意设计的(同样,出于对微服务的考虑)。
基本上,与应用程序的单个浏览器会话将必须为我们依赖的每个端点维护单独的SignalR连接,并且相关组件将根据需要管理(打开和关闭)连接。
我可以想到的一个流程是:
一个请求启动一个预订请求->预订请求取决于n个服务,以便“完成”(无论成功还是失败)->由于这些服务之间的异步通信,客户端将收到一个“预订” id”作为参考,并将通过处理不同服务中某些事件的相关“ booking-hub”在预订过程中得到通知->离开“ booking component”将导致集线器断开连接。
这将导致我们遇到以下问题:
答案 0 :(得分:0)
在体系结构概述中,是否应该完全分离SignalR集线器是正确的假设吗?
许多资源以及我在办公室实现中看到的是,使用单个集线器(核心)可以从您的服务中使用是一种更好的方法。
关于结合使用“微套接字”架构的“ websockets”是否有最佳实践?
这取决于您要如何处理连接。
在扩展方面是否存在任何限制(除了某些浏览器可能会限制websocket连接数的事实)?
Webscoket一次只能建立10个连接。
PS:关于连接,在旧的SignalR版本(@aspnet/signalr)中,重新连接由SignalR管理,但是在the new version中,您需要自己完成连接。