2013-04-08 141 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。