2013-06-26 13 views
12

Sono nuovo nell'utilizzo di SignalR (avviato oggi), È piuttosto semplice inviare un messaggio a TUTTI i client connessi, ma ora desidero semplicemente inviarlo a un gruppo. Non riesco a trovare una documentazione semplice su come aderire dal lato client. Se qualcuno può aiutarti, come posso SEMPLICARE unirti a un gruppo dal lato JavaScript. Grazie per qualsiasi aiuto.Come partecipare a un gruppo utilizzando SignalR

public class EventHub : Hub 
{ 
    public void SendNewMedia(MediaInfoViewModel model,Guid eventId) 
    { 
     Clients.Group(eventId.ToString()).setupmedia(model); 
    } 
} 
//Controller that is sending client new data 
var eventHub = GlobalHost.ConnectionManager.GetHubContext<EventHub>(); 
       var result = eventHub.Clients.Group(eventId.ToString()).setupmedia(eventViewer); 

//Finally the javascript. Not sure how to setup just for a group 
$(function() { 
    var event = $.connection.eventHub; 
    event.client.setupmedia = function (newMedia) { 

     $('#photolist').prepend('<li><img src="' + newMedia.MediaUrl + '" class="img-polaroid span2"/></li>'); 
    }; 
    $.connection.hub.start(function() { 
     event.server.create(eventID);//I know this is wrong but not sure how to connect 
    }).done(function() { 
     alert('conntected. Ready to retrieve data!'); 
    }); 
}); 

risposta

25

Non è possibile. Se potessi unirti a un gruppo da javascript, chiunque potrebbe usare il tuo codice per unirsi a qualsiasi gruppo che infrange la sicurezza. Se proprio devi farlo, crea un metodo sul lato server che prende come nome un nome di gruppo e aggiunge il client al gruppo.

public void JoinGroup(string groupName) 
{ 
    this.Groups.Add(this.Context.ConnectionId, groupName); 
} 

Successivamente, chiamare da JS come quella

eventHub.server.joinGroup("my-awsm-group"); 
+0

un po 'sorpreso questo è l'unica risposta. Essere nuovo per Signal R Sono curioso di sapere quali sono i modelli alternativi per entrare in un gruppo? Ci sono modi per unire un client sul lato server, ad esempio, che non fanno parte di un'interazione esplicita diretta come questa (dove il client JS chiama un metodo). Come puoi unire un client ad un gruppo sul lato server se hai il loro ID cliente e poi diventano magicamente parte di esso? PS. questa non è una domanda diversa - più o meno la stessa cosa se tu (o chiunque altro) hai altri pensieri –

+1

La gestione dei gruppi è fatta solo sul server, quindi sì - se hai l'id di connessione dell'utente puoi aggiungerlo a qualsiasi gruppo In effetti, è così che dovrebbe funzionare. –

Problemi correlati