2013-07-26 29 views
0

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

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

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

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

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

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

在此先感谢。

回答

2

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

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

当您更改页面时,您正在有效关闭到集线器的SignalR连接,然后您需要在下一页中启动它。这将引发Disconnect事件。

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

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

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

在你的OnReconnected回调中,你可能只想写一些逻辑,告诉用户他们已经被重新连接。

相关问题