即使在頁面刷新時,我仍想保持連接ID。 我在客戶端保存一個cookie,而是試圖找回它時,該 request.Cookies.Count爲0SignalR connectionID
這是實現接口:
public class ConnectionFactory : IConnectionIdPrefixGenerator
{
public string GenerateConnectionIdPrefix(IRequest request)
{
if (request.Cookies["signalrconnid"] != null)
{
return request.Cookies["signalrconnid"].Value;
}
return Guid.NewGuid().ToString();
}
}
這是從開始叫()函數:
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;
}
(不介意日期)
我看了不少文章,但我沒有得到什麼區別。
我之前沒有使用過SignalR,所以爲什麼要記住請求之間的連接ID而不是每次都生成一個新的guid? –
因爲我有一些基於該connectionID的邏輯。也就是說,每個客戶端都通過其ConnectionID進行識別,因此每次頁面刷新/客戶端轉到網站中的其他頁面時,我都無法擁有「新」客戶端。 – user1919071
爲什麼不簡單地創建連接ID和用戶之間的映射並跟蹤連接和斷開連接以維護映射。這就是我們的應用程序所做的。 – Pete