2012-06-21 11 views
14

Ho letto un numero decente di hub e gruppi SignalR. In particolare, ho notato che non è possibile ottenere un conteggio delle connessioni in un particolare gruppo.Gruppi SignalR: filtraggio gestito su client o server?

Il filtro per i gruppi viene gestito sul client o sul server? Se il server, perché SignalR non può esporre un conteggio? Se sul client, c'è un modo per inviare messaggi solo a determinati client?

risposta

31

Quando si invia un messaggio a un particolare gruppo di connessioni specifiche, il filtro viene eseguito sul server (non c'è alcun filtro, si sta solo indirizzando quella singola connessione o gruppo).

SignalR è basato su sub pub quindi non c'è un elenco di connessioni di per sé. Se si desidera tenere traccia di un elenco di connessioni, è necessario gestire la connessione e disconnettere gli eventi e mantenerli in memoria o in alcuni archivi persistenti.

Il motivo per cui non viene fornito un elenco di connessioni è perché qualsiasi stato memorizzato fa male scalare attraverso i nodi. Se ti abbiamo fornito un elenco di connessioni, è un fallimento, perché se aggiungi un altro nodo web alla tua fattoria, devi improvvisamente sincronizzare lo stato su di esso. Vi permettiamo di indirizzare singole connessioni o gruppi tramite il loro identificatore e questo ci consente di utilizzare il bus dei messaggi per pubblicare tutti i sottoscrittori di tale identificativo.

+3

Quindi, se ho 10.000 client e li invio a un gruppo che ne ha solo 5, gli altri 9.995 non riceveranno il messaggio e lo ignoreranno? Per evitare che il server non debba sapere chi è in quale gruppo? –

+10

* Quindi, se ho 10.000 clienti e lo invio a un gruppo che ne ha solo 5, gli altri 9.995 non riceveranno il messaggio e lo ignoreranno? * Corretto, non lo riceveranno. * Al fine di evitare che non sarebbe il server bisogno di sapere che è in quale gruppo? * No, stato della connessione (come gruppi) è rotonda scattato con la connessione stessa. – davidfowl

+0

Se l'appartenenza al gruppo mi viene fornita dal cliente, è sicura e non modificabile? (Ad es. Gruppo 'Classified' vs' Secret') – LamonteCristo

Problemi correlati