我正在创建一个嵌入到我的asp.net mvc 4项目中的聊天。我有一个在线用户ul列表,在OnConnected上添加一个用户,并在OnDisconnected上删除它。SignalR客户端断开/连接每页刷新。 ASP.NET MVC
所以,我的应用程序不是一个SinglePage应用程序,这意味着它一直刷新页面。
我在客户端使用这个在线用户列表来处理一些难题,因为signalr在每个页面刷新时调用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);
};
但我sufering处理多用户情况下...因为如果在超时运行之前有多个用户执行onDisconnected,则第二个用户将覆盖第一个用户的实例。
你不能避免它。导航到新页面是一个新的连接。用户可以有多个连接。 – davidfowl 2013-03-08 15:16:00
解决方法是广泛使用ajax。使用相同的布局页面,并使用ajax来更新页面内容。新的私人聊天窗口,iframe或其他应附加到身体,所以他们不会消失。 – user1778606 2013-06-04 03:44:24