HalJordan ha scritto:
Ma se il mio Client usa Retrofit per recuperare i dati da MongoDb attraverso REST. Per renderlo RealTime, devo aprire un canale con WebSocket?
Ora qui mi sorge un dubbio di implementazione. Se da Client1 faccio una push di un oggetto, e listen di Client2 lo riceve. Come posso fare push su MongoDB? o ad ogni nuovo push di oggetto, devo metterci riga sotto una POST?
Allora: innanzitutto REST non ha nulla a che fare, di per sé, con WebSocket. REST è uno "stile architetturale" e si usa tipicamente/principalmente su HTTP perché HTTP offre "verbi", header, status code, ecc... che lo rendono un protocollo "applicativo".
WebSocket invece permette solo di mantenere attiva una comunicazione full-duplex tra client e server, ovvero ANCHE il server può inviare al client qualcosa QUANDO vuole. E questo permette ad esempio di evitare meccanismi di "polling" che il client altrimenti dovrebbe fare ogni tot di tempo.
Poi cosa viene scambiato su WebSocket è assolutamente a libera scelta, potrebbero essere semplici stringhe, dati JSON, blocchi di dati binari, ecc...
Se la questione è: un ClientY deve aggiornarsi (per ricevere dati modificati da un altro ClientX) SENZA fare polling, allora lo scenario potrebbe essere: il canale WebSocket può servire affinché il server dica sostanzialmente al ClientY "hey, aggiornati!" e il ClientY allora fa una request in stile REST per ricevere la risorsa aggiornata. Tutto qui ..