Italian [B4J] Realizzare programma desktop che interagisca con Firebase Realtime Db

amorosik

Expert
Licensed User
Mi par di aver capito (spero tanto qualcuno mi smentisca) che volendo interfacciarsi da programma B4J con Firebase Realtime Db, scriverci sia possibile, mentre 'sentire' i cambiamenti non sia altrettanto facile, se non impossibile
Dove per 'sentire' intendo un meccanismo ad eventi, e quindi interrogazione db periodica esclusa, inzomma il polling mi fa venire l'orticaria
Quindi, supponendo di porci come obiettivo la realizzazione della classica chat tra smartphone e postazioni desktop
Lato Andoid/iOs ci dovrebbe essere gia' tutto sia per scrivere su db che per 'abbonarsi' ai cambiamenti del db, e quindi reagire tempestivamente se necessario
Lato B4J la scrittura basta andare giu' di post http, mentre per la lettura cambiamenti che intervengono sul db dovrebbe essere possibile installare un app Android dentro emulatore Android che gira sul pc in questione, quando l'app Android riceve i cambiamenti 'avverte' il programma B4J sul pc in qualche modo, ad esempio con un collegamento via socket tcp
Gia' prima di partire mi viene come un reflusso gastrico, e per questo vi chiedo, ma possibile non ci sia modo via B4J di 'sentire' i cambiamenti su Firebase?
 

Star-Dust

Expert
Licensed User
Longtime User
Si, tranne la cosa dell'app android con l'emulatore
 

Star-Dust

Expert
Licensed User
Longtime User
Mi spiego meglio. Firebase nasce solo per Android, iOs e Javascript (quindi Node.Js e di conseguenzaReact,Angulare, ionic)
Quello che usiamo per Deskptop sono delle REST API che useremmo in JS. Ma non c'è un sistema (tipo webSocket) per ricevere aggiornamenti di dati senza eseguire una richiesta.
Mentre per Android e iOs ci sono delle API che sollevano degli eventi.

Nella versione Desktop, in realtà il problema è anche che non ci sono librerie che "sveglianto" o sollevano un evento sollecitato da un elemento esterno. In Android e iOs userei pure Firebase Push Message che solleva un evento (e sveglia l'App), ma in Desktop non c'è altro modo che usare il polling. Anche se usi un App Android che manda la comunicazione all'Applicazione B4J, comunque il b4J deve stare in ascolto, con un polling o qualche altro sistema complicato... forse stabilendo un server (MQTT, WS, o altro) che permette di stare in ascolto.
Quindi in realtà non semplificherebbe , ma complicherebbe il tutto. Quindi non è una cosa semplice
 

amorosik

Expert
Licensed User
Mi spiego meglio. Firebase nasce solo per Android, iOs e Javascript (quindi Node.Js e di conseguenzaReact,Angulare, ionic)
Quello che usiamo per Deskptop sono delle REST API che useremmo in JS. Ma non c'è un sistema (tipo webSocket) per ricevere aggiornamenti di dati senza eseguire una richiesta.
Mentre per Android e iOs ci sono delle API che sollevano degli eventi.

Nella versione Desktop, in realtà il problema è anche che non ci sono librerie che "sveglianto" o sollevano un evento sollecitato da un elemento esterno. In Android e iOs userei pure Firebase Push Message che solleva un evento (e sveglia l'App), ma in Desktop non c'è altro modo che usare il polling. Anche se usi un App Android che manda la comunicazione all'Applicazione B4J, comunque il b4J deve stare in ascolto, con un polling o qualche altro sistema complicato... forse stabilendo un server (MQTT, WS, o altro) che permette di stare in ascolto.
Quindi in realtà non semplificherebbe , ma complicherebbe il tutto. Quindi non è una cosa semplice

Si, da una prima lettura sapevo del fatto che solo Android e iOS avessero librerie per 'sentire' i cambiamenti Firebase
Speravo ci fosse qualche barbatrucco per farlo anche su desktop Windows, mi pare impossibile che nessuno abbia ancora realizzato qualcosa di simile
Per quanto riguarda la possibilita' dell'app Android dentro emulatore che gira su stesso pc dove e' attiva procedura B4J, non sono d'accordo con te sulla comunicazione complicata, basta un semplice socket aperto lato B4J e quando l'app Android rileva un cambiamento potrebbe comunicarlo istantaneamente alla procedura B4J
 

Star-Dust

Expert
Licensed User
Longtime User
Si, da una prima lettura sapevo del fatto che solo Android e iOS avessero librerie per 'sentire' i cambiamenti Firebase
Speravo ci fosse qualche barbatrucco per farlo anche su desktop Windows, mi pare impossibile che nessuno abbia ancora realizzato qualcosa di simile
Per quanto riguarda la possibilita' dell'app Android dentro emulatore che gira su stesso pc dove e' attiva procedura B4J, non sono d'accordo con te sulla comunicazione complicata, basta un semplice socket aperto lato B4J e quando l'app Android rileva un cambiamento potrebbe comunicarlo istantaneamente alla procedura B4J
Almeno un WebSocket , un semplice socket avrebbe bisogno di continue richieste di aggiornamento quindi sarebbe un polling.

In giro sul web trovi che tanti hanno provato, ma senza risultato. Il sito di FireBase usa JavaScript per segnare in tempo reale i cambiamenti. Quindi con una WebApp e SDK JavaScript ufficiali potresti ottenere quello che desideri. Con un App normale, mi pare difficile
 
Top