2016-11-21 4 views
1

Étapes pour reproduirecharge utile du curseur est trop grand par rapport à la charge utile

La logique de l'application suppose qu'il ya plusieurs sources de données sur le serveur qui sont gérés par des groupes. Si le client veut souscrire à la source de données spécifique, il appelle:

myhub.Subscribe(dataSourceId); 

Du côté du serveur, nous ajoutons simplement le client au groupe spécifique:

await Groups.Add(Context.ConnectionId, dataSourceId.ToString()); 

Ensuite, tous les messages sont envoyés avec énorme charge utile du curseur. Et la partie la plus importante, la taille de celui-ci se développe à chaque abonnement.

enter image description here

enter image description here

Ai-je fait quelque chose de mal?

Mise à jour similaires: SignalR and large number of groups

Répondre

3

Malheureusement, c'est comment fonctionnent les curseurs. Le curseur contient des références à tous les sujets auxquels la connexion est abonnée et chaque groupe est un sujet distinct. En plus du curseur qui grossit, il y a encore une limite à l'utilisation de plusieurs groupes. Plus le nombre de groupes est élevé, plus le jeton de groupe est important. Le jeton de groupes est renvoyé au serveur lorsque le client se reconnecte et, s'il devient trop volumineux, il peut dépasser la limite de taille de l'URL, ce qui provoque des échecs de reconnexion.

+0

J'ai trouvé un problème similaire (mise à jour de la question). Les gars suggèrent de gérer les groupes manuellement et d'envoyer des mises à jour par connexion. Je suppose que cela fonctionnerait mais pour autant que je comprenne il n'y aura aucun moyen de se réabonner à ces groupes en cas de reconnexion. Est-ce une approche valable? – Max