保持connectionId与SignalR 1.0

时间:2013-04-08 09:43:09

标签: refresh signalr

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

我有方法:

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 个答案:

答案 0 :(得分:1)

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