我正在创建一个嵌入到我的 asp.net mvc 4 项目中的聊天。我有一个在线用户 ul 列表,它在 OnConnected 上添加一个用户并在 OnDisconnected 上删除它。
所以,我的应用程序不是 SinglePage 应用程序,这意味着它始终在页面上刷新。
我在客户端处理这个在线用户列表时遇到了一些困难,因为信号器在每次页面刷新时都会调用 OnDisconnected 和 OnConnected。
当另一个客户端在应用程序中正常导航时,它会在每次刷新页面时不断被删除和添加。
如何在客户端避免这种行为?
我正在尝试在运行带有 usersOnline 列表的页面的客户端上做一些这样的事情......
var timeout;
chat.client.login = function (chatUser) {
addUser(chatUser);
window.clearTimeout(timeout);
};
chat.client.logout = function (chatUser) {
timeout = setTimeout(function () { removeUser(chatUser.Id); }, 3000);
};
但是我很难处理多用户场景......因为如果多个用户在超时运行之前执行集线器 onDisconnected ,则第二个用户将覆盖第一个用户的实例。