2015-01-15 24 views
1

我正在一个旧的Webforms项目(注意VB.net)中编写Signalr中的一对一聊天。基本上我正在寻找像Facebook聊天这样的结果,所以基本上一旦用户登录,他们就被归类为“在线”。从哪里开始Signalr和Webforms聊天应用程序的聊天中心连接

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

显然我不想重新加载Chat.aspx页面来查看任何刚刚登录的用户,所以我的问题是,是否安全/有效地启动连接从说我的母版页,以便所有的用户界面在用户进入/离线时更新?我猜这会导致不必要的连接负载?

这是我的代码。

登录成功(增加的OnlineMembers

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

静态列表Chat.aspx

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

回答

0

拉吉,我想你最好是去调用一个子程序的时刻某人实际上正在登录。

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

您的Chat.aspx页面中的一个函数在登录以外的任何时间运行都会无用地产生负载。 SignalR的优点在于客户端的持久性,以及在触发客户端例程时如何定位“全部”或“主叫者”。

(这里是一个服务器端的枢纽调用在ASPX注册的程序。如果需要,您可以作为参数传递数据给它。)

下可能一个新的客户端的登录成功后进行: ie Clients.Caller.updateOnlineUserList(); - 或者 - Clients.Caller.updateOnlineUserList(someData);

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