Come rilevare e gestire le modifiche in api in tempo reale

1

Supponendo che abbia un endpoint di API impaginato:

GET /api/meetings

Il mio client sta consumando questo endpoint api e lo visualizza in uno scroll infinito che sotto ottiene pagine per pagina mentre l'utente scorre verso il basso.

Ora voglio aggiungere funzionalità in tempo reale all'api. Possono venire nuove riunioni e anche gli incontri esistenti possono cambiare (ad esempio, una riunione è stata annullata).

Idealmente, voglio l'interfaccia utente per tutto ciò che ho tirato così lontano da cambiare se qualcosa è cambiato nella riunione.

È qualcosa che è possibile ottenere in modo performante? Cosa cambia (livello alto ovviamente) pensi che sia necessario fare qualcosa per gestirlo?

Grazie.

    
posta Michael 10.01.2018 - 18:48
fonte

2 risposte

2

Is this something that is possible to pull off in a performant way ?

Si

What changes (high level of course) do you think needs to be done to handle this ?

Hai bisogno di un semplice meccanismo pub / sub.

  • Il tuo cliente sottoscrive alle notifiche dal server sulla creazione e modifica di riunioni
  • Ogni volta che una riunione viene creata o modificata, il server pubblica una notifica a tutti gli abbonati
  • Quando un client riceve una notifica su una riunione, può decidere se aggiungerla all'elenco o sostituire una riunione esistente se era già presente nell'elenco (già recuperata utilizzando l'endpoint GET) o semplicemente ignorarla se la la riunione non fa parte dell'elenco visualizzato.

Con un client frontend (javascript), che penso sia il tuo caso, puoi usare una connessione websocket (o SSE) a un broker . Il client si connette a un servizio websocket / SSE (il broker) e quindi il server pubblica la notifica a tutti i client connessi quando una riunione viene creata / aggiornata. Esistono molti server open source disponibili per questo scopo, oltre a soluzioni commerciali ospitate (SaaS).

Con un client di back-end, la sottoscrizione può essere effettuata con una richiesta HTTP, ad es. POST /api/meetings/subscribe in cui il client fornisce un URL di richiamata. Il server pubblica eventi effettuando una richiesta GET a tutti gli URL di callback che sono stati forniti, noto anche come "webhook".

    
risposta data 10.01.2018 - 22:21
fonte
1

Il tuo cliente deve passare uno o più parametri per dire al server quali riunioni ha e quali versioni di tali riunioni.

Un modo molto semplice per farlo consiste nell'inserire un campo "lastUpdated" nell'oggetto della riunione. Ogni volta che cambi o crei una riunione, aggiorna il campo con la data / ora corrente.

Quando il client chiama il server, può passare in un parametro che dice "Ho già riunioni con un campo lastUpdated < xxxx". Il server risponderà quindi con qualsiasi aggiornamento e ogni nuovo record.

    
risposta data 10.01.2018 - 20:35
fonte

Leggi altre domande sui tag