我聊天SignalR服务器,聊天支持小组聊天。 我还有一个服务器,它实际上创建了组和其他组管理工具。
每当用户将一个组(通过http post)留给服务器时,我希望聊天服务能够触发一些方法,例如LeaveGroup和其他一些logictics。
我将connectionId绑定到userId,所以我得到了解析请求。
问题是:服务器/服务与信号服务器之间的最佳通信方式是什么。
请注意,我不想对每个服务器/服务的可扩展性进行评估。
我的想法或多或少是在SignalR服务器内部托管一个web api服务器,但我似乎无法找到任何可能会损害性能的主题。
想法? 非常感谢。
p.s
我知道这里没有涉及代码。但似乎无关紧要。我在自己的窗口服务中有自己托管的web api,因此代码几乎相同。
如果需要,我很乐意提供更多数据/信息
答案 0 :(得分:1)
似乎此文档最适用于您尝试执行的操作:https://www.asp.net/signalr/overview/getting-started/tutorial-server-broadcast-with-signalr
它具体讲述了如何从服务器/服务应用程序与信号器客户端进行通信。可以通过信号器集线器或其他Web API完成从客户端到服务器/服务的通信。
从最佳实践角度来看,文档明确指出(https://www.asp.net/signalr/overview/guide-to-the-api/hubs-api-guide-server#callfromoutsidehub):
如果需要在长期存在的对象中多次使用上下文, 得到一次参考并保存它而不是每次都得到它 时间。获取上下文一次可确保SignalR向其发送消息 客户端与Hub方法构成客户端的顺序相同 方法调用。有关如何使用SignalR的教程 集线器的上下文,请参阅使用ASP.NET SignalR的服务器广播。
如果你真的进入可伸缩性,你可能想要考虑将你的信号通信集成到其他一些消息排队系统,但在大多数情况下这可能是过度的。