SignalR connectionID

时间:2012-12-31 06:13:17

标签: signalr

即使页面刷新,我也会尝试保留我的连接ID。 我在客户端保存了一个cookie,但是在尝试检索它的时候 request.Cookies.Count为0。

这是界面实现:

public class ConnectionFactory : IConnectionIdPrefixGenerator
{
    public string GenerateConnectionIdPrefix(IRequest request)
    {
        if (request.Cookies["signalrconnid"] != null)
        {
            return request.Cookies["signalrconnid"].Value;
        }

        return Guid.NewGuid().ToString();
    }
}

这是从Start()函数调用的:

 GlobalHost.DependencyResolver.Register(typeof(IConnectionIdPrefixGenerator), () => new ConnectionFactory());

这是客户方:

function setCookie(cName, value, exdays) {
    var exdate = new Date(2013,1,1,0,0,0,0);
    var c_value = escape(value) + ((exdays == null) ? "" : "; expires=" + exdate.toUTCString ());
    document.cookie = cName + "=" + c_value;
}

(不介意日期)

我看了很多关于它的帖子,但我没有得到有什么不同。

1 个答案:

答案 0 :(得分:3)

正如@Chris Moutray指出的那样,最好不要以这种方式使用ConnectionId。如果我在你的位置,我会在客户端创建一个SessionId,将其存储在cookie或session storage中,传递该sessionId而不是connectionId,然后将其用作长期会话之间的适当映射和短期的联系。 (使用UserId作为映射的问题是用户可以同时从多个位置登录。)

相关问题