从哪里开始Signalr和Webforms聊天应用程序的聊天中心连接

时间:2015-01-15 16:21:52

标签: asp.net signalr signalr-hub

我正在一个遗留的Webforms项目(注意VB.net)中在Signalr中编写一对一聊天。基本上我正在寻找像Facebook聊天这样的结果,所以基本上只要用户登录,它们就被归类为“在线”。

我取得了一些成功。在我的登录方法中,我将登录的用户添加到OnlineUsers的静态列表中。我有一个Chat.aspx页面,当我刷新时,启动SignalR集线器连接,我可以看到登录用户(从OnConnected方法加载)。

显然我不想重新加载Chat.aspx页面以查看刚刚登录的用户,所以我的问题是,从我的主页面开始连接是否安全/高效,以便所有UI都是用户上线/下线时更新?我猜这会导致大量不必要的连接?

这是我的代码。

登录成功(添加到OnlineMembers的静态列表

OnlineMember.AddOnlineMember(member.UserId, member.UserName)

Chat.aspx

$.connection.hub.start(function () { chat.server.getAllOnlineStatus(); });

1 个答案:

答案 0 :(得分:0)

Raj,我认为你最好在某人实际登录时调用例行程序。

如果您有一个将用户添加到OnlineUsers列表的登录例程,则可以通过调用更新在线用户列表的方法来触发所有客户端的更新。

Chat.aspx页面中除登录以外的任何时间运行的函数都会不必要地生成负载。 SignalR的优点在于客户端的持久性以及在触发客户端例程时如何定位“全部”或“调用者”。

(这是对ASPX中注册的例程的服务器端集线器调用。如果需要,您可以将数据作为参数传递给它。)

成功登录新客户端后,可以执行以下操作: 即Clients.Caller.updateOnlineUserList(); - 或者--Clients.Caller.updateOnlineUserList(someData);

(显然你需要编写“updateOnlineUserList”的代码,它会更新页面上显示的用户列表。)