【发布时间】:2014-09-04 08:16:27
【问题描述】:
我正在编写一个使用 SignalR 的 Web 应用程序。在服务器 c# 上,我有两个集线器。 它确实需要是两个,否则我只会合并它们并解决问题。
我遇到的问题是,虽然我知道 SignalR 客户端,集线器 将共享连接。我遇到的问题是,当我关闭浏览器或在客户端上调用 stop 时。我的服务器端 OnDisconnect(bool stopCalled) 事件中只有 1 个会触发。
我以某种方式期望当客户端断开连接时两者都会触发。
我是傻还是做错了什么? 任何信息将不胜感激。
路易
【问题讨论】:
-
根据文档 (asp.net/signalr/overview/signalr-20/hubs-api/…) 在某些情况下可能不会调用 OnDisconnected。如果不知道您想如何/想做什么的更多详细信息,当客户端断开连接时,将很难为您提供帮助。如果您确实需要同时从客户端到服务器的“2个连接”,也许使用组?例如。等待 Groups.Add(Context.ConnectionId, "line1");等待 Groups.Add(Context.ConnectionId, "line2");
-
嗨,我确实在文档中看到了那部分,但它周围的信息有点粗略。基本上我有以下几点。我在服务器上有两个继承自 Hub 的类。这两个类都实现了 OnConnect、OnDisconnect 方法。然后,这两个类都将详细信息存储在 HubClientCache 中。调用 OnConnect 时插入客户端 ID,调用 OnDisconnect 时删除客户端。
-
一个集线器只处理一个相当复杂的用户呈现系统。第二个枢纽用于用户之间的通信。在 javascript 客户端中,我调用了 start 方法两次。每个集线器一个。在这个阶段,服务器上的两个集线器都完美地处理了 OnConnect 事件。但是例如在关闭浏览器时,只有 1 个服务器集线器会看到调用的 OnDisconnect 方法。
-
检查
OnDisconnected的另一个重载是否没有被调用。并不是说在最新版本中只有一个OnDisconnected方法(即没有重载)以避免混淆。
标签: signalr signalr-hub