Comunicare aplicatie - website + baza de date comuna

Incerc impreuna cu cativa prieteni sa construiesc un sistem prin care un user de pe site-ul nostru sa trimita de exemplu un request la un alt user care foloseste o aplicatie mobila construita tot de noi. Am vrea ca la request de exemplu user-ul de pe site sa ii poata afla locatia celui care foloseste aplicatia mobila.

Ce fel de arhitectura ar trebui sa folosim? Ma gandesc ca nu e suficient sa folosim baza de date ca si punct comun. Cum anume am putea realiza un ,canal de comunicatii" intre website si aplicatie(scenariu asemanator: messenger-ul de la facebook cu website-ul)?

Cum anume am putea face ca o clasa de pe website sa poata interactiona cu o clasa din aplicatie?

Un api comun pe care sa il foloseasca si aplicatia de mobil precum si aplicatia web. Cel putin ar putea fi o idee.

2 Likes

Puteti face mesagerie cu un db pubsub. (implementare cu redis/amazon sau google cloud si canale/user->user/grupuri)
Este necesar si un server pentru push notifications daca vrei asa ceva. https://github.com/appleboy/gorush

Alternativa mai e un message broker gen https://xmpp.org sau https://www.rabbitmq.com. Fiindca vorbesti de un website, solutia nativa ar fi sa va folositi de WebRTC cu xmpp…

2 Likes

Daca ai nevoie doar de informatia de locatie de a unui user atunci poti sa folosesti DB-ul si un API de la server.

Daca ai nevoie de un ‘canal de comunicare’ intre doi utilizatori(fie si pe device-uri diferite) atunci poti sa folosesti sockets pentru a rezolva elegant situatia. Vezi socket.io sau pusher.

Folosind sockets atunci poti sa faci push la diferite informatii. De ex:

  1. User A are locatia X si foloseste un device mobil
  2. User B vrea sa stie locatia Userului A
  3. User A poate sa isi schimbe constant locatia

Daca folosesti sockets atunci User A poate sa dea ‘push’ la schimbarile lui de locatie si toti userii care asculta pe un anumit canal pot sa afle noua lui locatie aproape real time.

Daca folosesti un API lucrurile se pot complica un pic pentru ca User B trebuie sa faca request-uri la server frecvent pentru a afla noua locatia a userului A. Deci probabil pe varianta asta ai implementa un call la fiecare X minute sa vezi daca user-ul A se misca, problema e ca nu e foarte eficient sa faci asta.

5 Likes