Questa connessione pub / sub RabbitMQ / sockjs installa una soluzione comet?

0

La mia azienda sta tentando di impostare una connessione pub / sub utilizzando RabbitMQ e sockjs, su server Windows. Ho due domande:

  1. Il mio supervisore chiama questa installazione una soluzione di cometa, mi chiedevo se questa fosse la terminologia giusta?

  2. C'è uno stack di soluzioni migliore per avere un data server che spedisce in modo asincrono i dati a un client senza che il client richieda i dati (oltre alla sottoscrizione iniziale)?

posta AlexLordThorsen 03.08.2012 - 01:54
fonte

2 risposte

0
  1. SockJS è un po 'più di "Cometa". "Comet" riguarda principalmente il polling (come http long-polling). SockJS utilizzerà i WebSocket di streaming nativi quando disponibili. In altre parole: SockJS userà Websockets "appropriati" se possibile e "cometa" altrimenti.

  2. No. SockJS è probabilmente buono come può essere se hai bisogno di supportare IE6 e IE7 e strane configurazioni di rete. Se puoi limitare i tuoi browser supportati a IE10, a nuovi FF e Chrome e non preoccuparti degli utenti dietro proxy danneggiati che utilizzano WebSocket nativi potrebbe essere un'alternativa.

Come nota a margine, dai un'occhiata a RabbitMQ-Web- Plugin Stomp . Potrebbe essere utile in misura.

    
risposta data 03.08.2012 - 14:39
fonte
0

' Cometa ' è un approccio che consente di simulare la comunicazione di rete in stile push su una richiesta senza stato- protocollo di risposta, tipicamente HTTP. È una soluzione al problema che un server HTTP non può attivamente inviare messaggi a un client: l'unico modo per il server di ottenere dati dal client è rispondere a una richiesta.

L'approccio alla cometa utilizza "lunghi sondaggi" per ottenere i dati spinti; funziona così:

    Il client
  • invia la richiesta al server, con un timeout molto lungo
  • Il server
  • mantiene la connessione aperta, ma non risponde immediatamente
  • non appena il server vuole inviare qualcosa, risponde alla richiesta in sospeso
  • Il client
  • , dopo aver ricevuto ed elaborato la risposta, invia immediatamente la richiesta successiva

Se questo è ciò che fa la tua soluzione, allora è giustificato chiamarla una soluzione 'cometa'.

Il problema più importante della comunicazione in stile comet è che il server deve essere preparato per mantenere una quantità enorme di richieste aperte contemporaneamente: se hai 1000 utenti collegati al tuo sito, avrai 1000 richieste in sospeso, tutto il tempo. Inoltre, i timeout e i problemi di rete (connessioni interrotte, ecc.) Possono rendere le soluzioni di cometa abbastanza inaffidabili.

Per quanto riguarda le alternative:

  • puoi compromettere il polling breve in stile heartbeat (il client invia un heartbeat ogni x secondi, il server risponde con qualsiasi dato disponibile)
  • puoi provare WebSockets , anche se il supporto del browser non è l'ideale
  • puoi decidere di scendere dalla piattaforma web e creare invece un'applicazione desktop
  • puoi trovare un plug-in del browser che fornisce la comunicazione asincrona server-push
risposta data 03.08.2012 - 10:07
fonte

Leggi altre domande sui tag