0

背景:

我无法弄清楚为什么从尚未初始化的集线器调用 Disconnect。

我有两个不同的 MVC 视图来创建不同的信号连接:

  • ListView(JS 创建一个到实现 IDisconnect 的 ListHub 的连接)
  • DetailsView(JS 创建一个到 DetailsHub 的连接,实现了 IDisconnect)

当用户登录时,他/她被重定向到 ListView,其中 javascript 创建到 ListHub 的连接,以便页面知道锁定/解锁列表中项目的事件。当用户单击一个项目时,会向 ListHub 发送一个信号,并且该项目被用户锁定。之后,我使用 event.preventDefault() 停止单击执行 GET 请求,它运行良好。

问题是...... 一旦用户离开另一个页面 - 或者如果页面只是重新加载 -就会触发DetailsHub的 Disconnect 方法。我不明白为什么会这样。请记住,ListHub 是迄今为止唯一的活动集线器。没有初始化其他集线器或连接。不过,这是我得到的行为。

我想要达到的目标

我在这里想要实现的是在 DetailsHub 上引发/调用 Disconnect 时做一些事情。当用户与 ListHub 断开连接时,我不希望发生任何事情。

4

1 回答 1

1

它写在 signalR 项目的 wiki 中:

每当客户端断开连接时,将在所有实现 IDisconnect 的集线器上调用 Disconnect 方法。调用此方法时,您可以使用 Context.ConnectionId 访问断开连接的客户端。

https://github.com/SignalR/SignalR/wiki/Hubs

于 2012-04-03T11:48:18.527 回答