serveur unique de la comète de fil rapide possible?
-
28-09-2019 - |
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
.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 .