SignalR几乎在网站的所有页面上聊天

时间:2013-07-26 07:37:27

标签: asp.net signalr signalr-hub signalr.client

我为我们的法人网站(ASP.NET)开发了SignalR(1.1.2)聊天,我不知道它几乎适用于网站的所有页面。我有下一个问题:

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

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

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

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

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

  5. 提前致谢。

1 个答案:

答案 0 :(得分:3)

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

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

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

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

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

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

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

相关问题