SignalR Core 之 Hubs 基本概念
Hubs可以做什么
实时调用已经连接的任意客户端的Function
如果与RPC的概念做对比的话,SignalR更像是RFC(远程函数调用)
配置Hubs
首先注册signalr service。
配置中间件
创建对应的Hubs
创建一个公有类ChatHub
,继承Hub
。这个类里面实现的公有方法都可以被已经连接的客户端调用。
需要注意的是Hub的实例化是由SignalR框架来控制的,而且在达到一定规模后,Hubs的部署一定是分布式的,所以切记将Hubs保持为无状态模式。
重要的结构
Context
Clients
RFC示例
ReceiveMessage是客户端已经实现的函数
RFC约束
上个例子中,远程调用的函数是以字符串的形式来表示的,灵活性有余,但是正确性和一致性不足,增加函数约束来解决次问题。
事件Hook
目前Hubs针对客户端的连接和断开事件提供了Hook,只需要重载OnConnectedAsync
和OnDisconnectedAsync
即可
错误处理
Hubs中为捕获的异常将会抛到调用的客户端层,好像真的是自己本地的函数一样,所以客户端需要利用自身的异常机制来处理可能遇到的错误。
版权声明: 本文为 InfoQ 作者【猫定谔的靴】的原创文章。
原文链接:【http://xie.infoq.cn/article/e1a133cc76f5c30d77902a524】。文章转载请联系作者。
评论