Mi rendo conto che queste domande sono simili:Broadcasting messaggio a tutti i client, ad eccezione di sé in SignalR
SignalR - Broadcast to all clients except Caller
Send a message to all clients in a Group, except for the current client
Tuttavia, essi sono vecchi e nulla nella documentazione corrente mi ha dato alcun indizio come se sto facendo la cosa giusta o no.
ecco la domanda/problema:
ho bisogno di essere in grado di trasmettere un messaggio dal lato server per tutti i client connessi, tranne il ragazzo che ha presentato la richiesta HTTP - immaginare che qualcuno inviando un modulo e ottenere tutte le persone collegato allo stesso modulo notificato che qualcosa è stato inviato.
Il modo in cui sto facendo che ormai è qualcosa di simile:
var context = GlobalHost.ConnectionManager.GetHubContext<MyHub>();
var connectionID = HttpContext.Request.Cookies["conn-id"].Value;
context.Clients.AllExcept(connectionID).addMessage(message);
E ogni volta che viene stabilita una connessione, ho impostato ConnectionID in un cookie sul lato client, come così:
$.connection.hub.start().done(function(){
$.cookie("conn-id",$.connection.hub.id);
});
Quindi le mie domande sono:
È questo il miglior unico approccio/posso prendere in questo caso? Posso leggere l'id di connessione del client che ha originato la richiesta da qualche altra parte come
hub.Context.ConnectionID
o qualcosa di simile al modo in cui si otterrebbe ilSessionID
da HttpContext.Current.Session.SessionID?Posso impostare l'ID di connessione a livello di programmazione quando un client si connette impostandolo su SessionID, ad esempio? Potrebbe causare un problema per qualche motivo? In tal caso, puoi spiegare come impostare l'ID di connessione a livello di codice e a quale evento devo collegarmi per farlo?
Ho notato che ogni volta che la pagina viene ricaricata, l'ID di connessione viene cambiato in un guid diverso. Come si imposta ConnectionId solo una volta e lo si mantiene almeno per la durata della sessione?
link interrotto, si prega di aggiornare. – Brent