2013-04-08 88 views
1

页面刷新时如何保持ConnectionId?找不到IConnectionIdPrefixGenerator。我在客户端保存了一个cookie(其中包含ConnectionId)。我应该把它放在哪里?保持connectionId与SignalR 1.0

我有方法:

public void Connect(string username, string password, string xmppDomain) 
{ 
    XmppClient xmppClient = XmppClients[Context.ConnectionId]; 

    xmppClient.Username = username; 
    xmppClient.Password = password; 
    xmppClient.XmppDomain = xmppDomain; 
    xmppClient.Status = "Online"; 
    xmppClient.Open(); 
} 

我可以用这个代码把保存的ConnectionId到Context.ConnectionId

HttpCookie myCookie = HttpContext.Current.Request.Cookies["ConnectionId"]; 
Context.ConnectionId = myCookie.ToString(); 

我也有jQuery代码,这就要求每个页面的刷新:

$.connection.hub.start().done(function() { 
    matrixHub.server.connect(xmpp_user, xmpp_password, xmpp_host); 
}); 

如何修改这个代码,并使用持久ConnectionId?我使用Matrix XMPP SDK,ASP.NET MVC C#和IIS。

回答

1

刷新页面时,现有连接将断开连接,并建立一个新连接,并使用新连接ID建立新连接。此行为无法更改。将连接ID​​保存在cookie中将无济于事,因为服务器断开连接后会遗漏连接。您应该使用ASP.NET MVC中的会话管理机制或您的自定义Cookie将用户关联到连接ID。