Radiodiffusion message à tous les clients (à l'exception de l'auto dans SignalR

Je me rends compte que ces questions sont similaires:

SignalR - Diffusion pour tous les clients (à l'exception de l'Appelant

Envoyer un message à tous les clients dans un Groupe, sauf pour le client actuel

Cependant, ils sont vieux et rien dans la documentation en cours m'a donné des indices quant à savoir si je suis en train de faire la bonne chose ou pas.

Voici la question/problème:

J'ai besoin d'être en mesure de diffuser un message à partir du côté serveur à tous les clients connectés sauf le mec qui a soumis la requête http imaginer que quelqu'un de la soumission d'un formulaire et tous les gens qui sont connectés à la même forme d'être informé que quelque chose a été soumis.

La façon dont je le fais que maintenant, c'est quelque chose comme ceci:

var context = GlobalHost.ConnectionManager.GetHubContext<MyHub>();
var connectionID = HttpContext.Request.Cookies["conn-id"].Value;
context.Clients.AllExcept(connectionID).addMessage(message);

Et chaque fois qu'une connexion est établie, j'ai mis ConnectionID dans un cookie sur le côté client de la manière suivante:

$.connection.hub.start().done(function(){ 
      $.cookie("conn-id",$.connection.hub.id); 
});

Donc mes questions sont:

  1. Est-ce la meilleure/la seule approche que je peux prendre dans ce cas? Puis-je lire l'identifiant de connexion du client à l'origine de la demande de quelque chose comme hub.Context.ConnectionID ou quelque chose de similaire à la façon dont vous voulez obtenir le SessionID de HttpContext.Actuel.Session.SessionID?
  2. Puis-je régler l'id de connexion par programmation lorsqu'un client se connecte par la valeur de l'id de session, par exemple? Que cela pourrait-il poser un problème pour une raison quelconque? Si oui, pouvez-vous s'il vous plaît expliquer comment configurer l'IDENTIFIANT de connexion par programmation et à l'événement qui dois-je brancher pour le faire?

J'ai remarqué que chaque fois que la page est rechargée, l'identifiant de connexion est modifié pour un autre guid. Comment définissez-vous le ConnectionId qu'une seule fois et de le maintenir au moins pour la durée de la Session?

OriginalL'auteur Icarus | 2013-06-21