在SignalR(服务器)中心,我想进行许可证检查。如果检查为negativ,那么我想在Hub的OnConnected中阻止连接。客户端应该通过消息(无有效许可证)进入集线器启动任务已取消。
当我在SignalR Hub的OnConnected上返回带有聚合异常的任务时,客户端会出现故障状态,并出现超时异常。
如何阻止与SignalR集线器的连接,并向客户端发送阻止连接的消息?
答案 0 :(得分:1)
据我所知,您不能只在服务器上启动或停止连接。客户端必须自行断开连接。如果要使用集线器进行许可证检查,则需要让客户端连接 - 发送许可证信息 - 服务器检查,如果无效,请在客户端上调用$ client.disconnect。
像blorkfish提到的另一个选项是允许它们连接,将它们添加到列表中并在它们调用服务器上的方法时检查它。
答案 1 :(得分:0)
我不认为你应该用异常阻止连接。然后,您的客户将无法判断SignalR连接中是否存在真正的错误。
而是发送一条特定的SignalR消息,表示没有许可证 - 然后管理服务器端的连接对象
保留许可连接列表和未许可连接列表
因此,不使用Clients.All进行广播,而是使用Clients.Client("< client_connection_id>")进行广播。
希望这会有所帮助。