Veloce server singolo filo cometa, possibile?
-
28-09-2019 - |
Domanda
Di recente ho incontrato un paio di casi in cui un server potrebbe distribuire un flusso di eventi che contiene gli stessi dati esatti per tutti gli ascoltatori, come ad esempio una scatola 'recente attività'.
Mi venne in mente che è abbastanza strano e inefficiente per avere un server come Apache eseguire un'elaborazione filo e l'interrogazione del database per ogni flusso cometa singola contenente gli stessi dati.
Quello che vorrei fare per coloro globale (non per utente) flussi di è gestito un singolo thread che emette continuamente i dati, e un nuovo (verde) filo per ogni nuova richiesta che emette le intestazioni e poi 'fonde' nel thread principale .
E 'possibile per un thread per servire prese multiple, o per più client per ascoltare la stessa presa?
Un esempio
o = evento
# 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
fa qualcosa del genere esiste? Funzionerebbe? E 'possibile fare?
Disclaimer: non sono un esperto di server
.Soluzione
Scopri node.js - thread singolo, event driven server. Utilizza JavaScript come bonus.
Altri suggerimenti
Se si utilizza ASP.NET, il seguente post dovrebbe essere utile
http://beta.codeproject.com/KB/aspnet/CometAsync.aspx
Tra l'altro, è possibile implementare Comet per servire più di un client per thread, ma solo un thread per tutti i client non sembra abbastanza?
Si parla di "richieste web asincrone" applicati ai Comet, alcuni, come "Comet asincrono".
A mio parere questo approccio, così popolare in questi giorni, è profondamente sbagliata .