Ordina e filtra gli eventi inviati dal server nell'origine di eventi angular.js

7

Ho un client in AngularJS in cui consumo più SSE (Server-Sent-Events) in Java dal lato server (ci sono più endpoint in diversi server Web nel back-end). Collegamento diagramma

Attualmente registro un listener per ogni tipo di evento proveniente da ciascuna connessione SSE, come ad esempio:

source.addEventListener('alpha', function(e) {
  doSomething();
}, false);

Lo scopo è mostrare una notifica basata su questi eventi, e con questo ho alcune domande:

  • Come può sapere il cliente se le informazioni sono cambiate nel back-end?
  • Come organizzare e filtrare questi eventi? Ad esempio, ricevendo contemporaneamente più eventi da più connessioni, come posso gestirli al fine di mostrare al cliente una notifica specifica relativa a un evento specifico?

Nota: non sto solo parlando di organizzare un evento per tipo, ma ho anche bisogno di avere in mente se un evento è più importante di un altro.

Finora ho solo pensato di ricevere tutti gli eventi e di salvarli in una lista che potrei ordinare e filtrare. C'è un problema se due eventi SSE vengono attivati contemporaneamente? Conosci un esempio di questo?

  • È una buona idea creare la logica per organizzare gli eventi sul lato client?
  • Devo creare un database per questi eventi?

Grazie,

    
posta vak 20.11.2016 - 06:05
fonte

1 risposta

0

How to organise and filter these events?

but I also need to have in mind if an event is more important than another.

Immaginerei di avere una o più code. Quando gli eventi arrivano, vengono messi in coda. Il modo in cui vengono gestiti dipende dalle tue esigenze di approccio.

Puoi avere più code, ognuna delle quali rappresenta la priorità e mettere in coda i tuoi eventi nei bucket giusti. Le code con priorità più alta vengono consumate prima dal sistema di notifica.

Puoi anche avere una grande coda con eventi prioritari nella posizione della testa. Puoi accodare gli eventi e riordinare ogni volta che gli eventi entrano o fare una logica intelligente per iniettare gli eventi in posizione per evitare riordinamenti.

Is it a good idea to make the logic for organising the events on the client side?

Dipende dalle tue esigenze. Ma aggiunge un po 'di overhead facendolo in entrambi i posti.

Should I create a database for these events?

Ogni volta che si verifica una memoria persistente per gli eventi, di solito penso ai tempi di inattività e alla fine del server. Ma questo dipende dalle tue esigenze. Se i tuoi eventi possono essere scrollati di dosso, non è necessario persisterli. Ma se no, dovrai mantenerli da qualche parte.

How can the client know if the information has changed in the backend?

Stai usando SSE. Basta che il server invii un altro evento che ti informi del cambiamento. Potrebbe essere necessario aggiornare la logica per aggiornare gli eventi in coda e il payload per indicare che questi eventi sono correlati.

Is there a problem if two SSE events are fired at the same time?

JavaScript è a thread singolo. Anche se due eventi vengono inviati contemporaneamente e arrivano al tuo browser nello stesso momento, JavaScript servirà solo un evento alla volta.

    
risposta data 21.11.2016 - 23:10
fonte

Leggi altre domande sui tag