Question

J'ai récemment rencontré quelques cas où un serveur distribuerait un flux d'événements qui contient les mêmes données pour tous les auditeurs, comme une boîte « activité récente ».

Il me est apparu qu'il est tout à fait étrange et inefficace d'avoir un serveur comme Apache exécuter un traitement de fil et l'interrogation de la base de données pour chaque flux de comète contenant les mêmes données.

Qu'est-ce que je ferais pour ces cours d'eau est géré global (et non par utilisateur) un seul fil qui émet en continu des données, et un fil nouveau (vert) pour chaque nouvelle demande qui délivre les en-têtes, puis « se confond » dans le thread principal .

Est-il possible pour un thread pour servir plusieurs prises, ou pour plusieurs clients à écouter la même prise?

Un exemple

o = événement

       # threads received
|  a b # 3
o / /  # 3       -
|/_/
|      # 1
o  c   # 2       a, b
| /
o/     # 2       a, b
o      # 1       a, b, c
|      #                    connection b closed
o      # 1       a, c

Est-ce que quelque chose comme ça exist? Ne serait-il travailler? Est-il possible de le faire?

Disclaimer: Je ne suis pas un expert du serveur

.
Était-ce utile?

La solution

Vérifiez Node.js - un seul thread, événement serveur entraîné. Utilise JavaScript comme un bonus.

Autres conseils

Si vous utilisez ASP.NET, le post suivant doit être utile

http://beta.codeproject.com/KB/aspnet/CometAsync.aspx

Par ailleurs, il est possible de mettre en œuvre la comète pour servir plus d'un client par thread, mais un seul fil pour tous les clients ne semble pas suffisant?

Vous parlez de « requêtes Web asynchrones » appliquées à Comet, certains comme « Comet asynchrone ».

À mon avis, cette approche, si populaire ces jours-ci, est profondément erronée .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top