Можно ли отменить Context.ConnectionId
с помощью SignalR 2.4.1? Жаль, что IConnectionFactory
больше не доступен.
Я пробовал использовать приведенный ниже код. $.connection.id = userId;
просто игнорируется, var userId = Context.QueryString["UserId"]
передается в ChatHub, но поскольку Context.ConnectionId
читается только в методе Connect
, я не могу его отменить.
I wi sh чтобы сохранить функциональность Clients.AllExcept(connectionId).onNewUserConnected(connectionId, userName)
, которая работает только в том случае, если Context.ConnectionId
переопределяется во всех случаях, поскольку простой перезаписи connectionId
недостаточно, потому что SignalR будет иметь исходный Guid, поэтому не будет соответствовать значениям, которые я передаю.
Любая помощь будет принята с благодарностью.
public void Connect(string userName) {
var connectionId = Context.ConnectionId;
if (ConnectedUsers.Count(x => x.ConnectionId == connectionId) != 0) {
return;
}
ConnectedUsers.Add(new Chat.UserDetail {
ConnectionId = connectionId,
UserName = userName
});
Clients.Caller.onConnected(connectionId, userName, ConnectedUsers, CurrentMessage);
Clients.AllExcept(connectionId).onNewUserConnected(connectionId, userName);
}
public override Task OnConnected() {
var userId = Context.QueryString["UserId"];
return base.OnConnected();
}
$(function() {
var userId = $("#User").attr("data-id");
var chatHub = $.connection.chatHub;
$.connection.hub.qs = { 'UserId': userId };
$.connection.id = userId;
registerClientMethods(chatHub);
$.connection.hub.start().done(function() {
registerEvents(chatHub);
});
});