【问题标题】:Keep connectionId with SignalR 1.0使用 SignalR 1.0 保持 connectionId
【发布时间】:2013-04-08 19:53:24
【问题描述】:

页面刷新时如何保留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();
}

我可以使用此代码将保存的连接 ID 放入 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。

【问题讨论】:

    标签: refresh signalr


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多