Después de buscar en varios repositorios y páginas de internet al concluir hemos descubierto la solución que te mostramos aquí.
Mantenerse connectionId
con userName
creando una clase como sabemos que Signalr
sólo tiene la información de connectionId
de cada par conectado.
Crear una clase UserConnection
Class UserConnection
public string UserName set;get;
public string ConnectionID set;get;
declarar una lista
List uList=new List();
pasar el nombre de usuario como cadena de consulta durante la conexión desde el lado del cliente
$.connection.hub.qs = 'username' : 'anik' ;
Empuje al usuario con conexión a esta lista en el método conectado
public override Task OnConnected()
var us=new UserConnection();
us.UserName = Context.QueryString['username'];
us.ConnectionID =Context.ConnectionId;
uList.Add(us);
return base.OnConnected();
Desde el envío del mensaje, busque el nombre de usuario de la lista, luego recupere el ID de conexión del usuario y luego envíe
var user = uList.Where(o=>o.UserName ==userName);
if(user.Any())
Clients.Client(user.First().ConnectionID ).sendMessage(sendFromId, userId, sendFromName, userName, message);
DEMO
Todas estas respuestas son innecesariamente complejas. Simplemente anulo “OnConnected ()”, tomo el Context.ConnectionId único y luego lo transmito de inmediato al javascript del cliente para que el cliente lo almacene y lo envíe con llamadas posteriores al servidor concentrador.
public class MyHub : Hub
public override Task OnConnected()
signalConnectionId(this.Context.ConnectionId);
return base.OnConnected();
private void signalConnectionId(string signalConnectionId)
Clients.Client(signalConnectionId).signalConnectionId(signalConnectionId);
En el javascript:
$(document).ready(function ()
// Reference the auto-generated proxy for the SignalR hub.
var myHub = $.connection.myHub;
// The callback function returning the connection id from the hub
myHub.client.signalConnectionId = function (data)
signalConnectionId = data;
// Start the connection.
$.connection.hub.start().done(function ()
// load event definitions here for sending to the hub
);
);
Recuerda que tienes permiso de valorar esta división .