0

我为我们的公司网站 (ASP.NET) 开发 SignalR (1.1.2) 聊天,但我不知道如何将它放置在几乎所有网站页面上。我有下一个问题:

  1. 当用户移动到其他页面时,用户的在线/离线状态会发生变化。

    在我的聊天状态设置中,我的 Hub 类中的 OnConnected/Ondisconnected 回调执行,并在用户移动到其他页面时调用。

  2. 我应该在所有页面上使用 $.connection.hub.start().done 初始化 SignalR 吗?可能有解决方法吗?

  3. 跨域是什么意思?我不明白这个定义。

  4. 我应该在 Hub 类的 OnReconnected 回调中移动什么逻辑?

提前致谢。

4

1 回答 1

3

听起来您正试图以错误的方式使用 SignalR。

除非您的应用程序是单页应用程序,否则每次更改页面时都必须启动集线器。例如,全部通过 JavaScript 在一个页面上运行。

当您更改页面时,您实际上是关闭了与集线器的 SignalR 连接,然后您需要在下一页上启动它。这将引发 Disconnect 事件。

每次连接时,您的用户都会获得一个新的 ConnectionID,因此他们的在线/离线状态将根据您的处理方式而改变。

唯一的解决方法是创建一个单页应用程序。

跨域意味着您正在从客户端调用另一个 URL 上的 SignalR 方法。

在您的 OnReconnected 回调中,您可能只想编写一些逻辑来通知用户他们已重新连接。

于 2013-07-26T13:13:08.483 回答