Я пытаюсь сохранить идентификатор соединения для пользователя, я имею в виду, даже если он обновляет страницу, он получает тот же connectionid
Это то, что я мог сделать до сих пор
часть JavaScript
// Start the connection
$.connection.hub.start(function () { chat.join(projectId, userId, userName); }).done(function () {
alert("Connected!");
var myClientId = $.connection.hub.id;
setCookie("srConnectionid", myClientId, 1);
});
function setCookie(cName, value, exdays) {
try{
var exdate = new Date();
exdate.setDate(exdate.getDate() + exdays);
var c_value = escape(value) + ((exdays == null) ? "" : "; expires=" + exdate);
document.cookie = cName + "=" + c_value;
}
catch(err){
alert(err.Description);
}
}
и затем я создал класс, который наследует IConnectionIdFactory, вот так
public class MyConnectionFactory : IConnectionIdFactory
{
public string CreateConnectionId(IRequest request)
{
if (request.Cookies["srconnectionid"] != null)
{
return request.Cookies["srconnectionid"];
}
return Guid.NewGuid().ToString();
}
}
я зарегистрировал указанный выше класс в Application_start (), как показано ниже
protected void Application_Start()
{
AspNetHost.DependencyResolver.Register(typeof(IConnectionIdFactory), () => new MyConnectionFactory());
AreaRegistration.RegisterAllAreas();
RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
}
Моя проблема - каждый раз, когда класс MyConnectionFactory вызывается внутри CreateConnectionId
request.Cookies ["srconnectionid"] каждый раз имеет значение null, поэтому пользователю каждый раз назначается новый connectionid. Я мог найти только одну ссылку, которая помогла мне поддерживать идентификаторы соединений. Это http://www.kevgriffin.com/maintaining-signalr-connectionids-across-page-instances
Может кто-нибудь подсказать, как исправить мою проблему, или есть какой-то другой способ повторно использовать идентификатор соединения для того же пользователя ...?
Значение Cookie установлено на клиентской стороне. Я пробовал это в течение 2 дней. Это было бы очень полезно
Заранее спасибо