我为我们的法人网站(ASP.NET)开发了SignalR(1.1.2)聊天,我不知道它几乎适用于网站的所有页面。我有下一个问题:
当用户在其他页面上移动时,用户的在线/离线状态会发生变化。
在我的聊天状态设置中执行我的Hub类中的OnConnected / Ondisconnected回调,并在用户移动到其他页面时调用。
我应该使用$ .connection.hub.start()初始化SignalR吗?在所有页面上完成?可能有解决方法吗?
跨域意味着什么?我不明白这个定义。
我应该在Hub类的OnReconnected回调中移动什么逻辑?
提前致谢。
答案 0 :(得分:3)
听起来你正试图以错误的方式使用SignalR。
除非您的应用程序是单页面应用程序,否则每次更改页面时都必须启动集线器。例如。全部通过JavaScript在一个页面上运行。
当您更改页面时,您实际上是关闭了与集线器的SignalR连接,然后您需要在下一页上启动它。这将引发Disconnect事件。
每次连接时,您的用户都将获得一个新的ConnectionID,因此他们的在线/离线状态将根据您的处理方式而改变。
唯一的解决方法是创建单页应用程序。
跨域意味着您正在从客户端调用另一个URL上的SignalR方法。
在您的OnReconnected回调中,您可能只想编写一些告知用户已重新连接的逻辑。