Saltar al contenido

Cliente SignalR con múltiples conexiones

No dejes de compartir nuestros post y códigos en tus redes, necesitamos tu ayuda para aumentar esta comunidad.

Solución:

$.connection.hub se crea en la inclusión /signalr/hubs.

Al final del archivo, esencialmente lo hace:

$.connection.hub = $.hubConnection("/signalr",  useDefaultPath: false );

Para crear el proxy concentrador, haga lo siguiente:

var myHub = $.connection.hub.createHubProxy('myHub');

Ejemplo simple para múltiples conexiones:

var connection1 = $.hubConnection("http://www.myfirstendpoint.com");
var connection2 = $.hubConnection("http://www.mysecondendpoint.com");

var myCon1Hub = connection1.createHubProxy('myCon1Hub');
var myCon2Hub = connection2.createHubProxy('myCon2Hub');

myCon1Hub.client.foo = function()  ... Whatever you want ... ;
myCon2Hub.client.foo = function()  ... Whatever you want ... ;

connection1.start();
connection2.start();

Mi solución para tales ocasiones:

var SignalRHelpers = function () 
  var _connectionDeferred;

  var subscribeToConnectionStart = function (callback) 
    if (!_connectionDeferred)   // start connection if not yet initialized
        _connectionDeferred = $.connection.hub.start();

    if ($.connection.hub.state == $.connection.connectionState.connected && callback) 
        // already connected
        callback();
     else if (callback) 
        // register handler
        _connectionDeferred.done(callback);
    
  ;

  return 
    SubscribeToConnectionStart: subscribeToConnectionStart
  ;
();

Almacena internamente el objeto de promesa de start() y adjunta controladores según sea necesario.

Básicamente, simplemente llame a SignalRHelpers.SubscribeToConnectionStart cada vez que necesite conectarse. Por ejemplo

SignalRHelpers.SubscribeToConnectionStart(function()
    someHub.server.executeSomething();
);

Sección de Reseñas y Valoraciones

Al final de la artículo puedes encontrar las observaciones de otros programadores, tú de igual manera tienes la opción de insertar el tuyo si te apetece.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *