Naar de inhoud
Inzichten

Real-time chat met Laravel, React & Node.js

real time

Voor het odisee MyCompass project dat we recent hebben afgewerkt, hebben we een real-time chat gemaakt. We hebben hiervoor gebruik gemaakt van Laravel, React en Laravel echo server. 

Als gebruiker kan je rechtstreeks chatten met je coach en in de wereld van vandaag moeten zo’n dingen synchroon kunnen verlopen: als je coach beschikbaar is, wil je daar rechtstreeks mee kunnen chatten zonder vertragingen. Deze gesprekken zijn vertrouwelijk, dus moeten we er natuurlijk ook voor zorgen dat dit op een veilige en betrouwbare manier gebeurt.

Daarom hebben we verschillende lagen van security ingebouwd.

De gebruiker drukt op verzenden en stuurt een POST request met de inhoud van het bericht naar de API. De API verwerkt dit bericht, slaat het op in de database en zet in een queue (wachtrij) een message met deze inhoud:

1
{"user-id": "42", "sender": "9", "content": "new-message"}. 

Als de queue dan verwerkt wordt door supervisor (proces dat altijd draaiende wordt gehouden), wordt er een bericht gestuurd naar de NodeJS server.
Deze stuurt dan op zijn beurt een pushbericht over een websocket naar de browser van enkel deze ene gebruiker (42). Wanneer dat aangekomen is, vraagt de browser van die gebruiker aan de API om "new-message" berichten op te halen in het gesprek met user 9.

Omdat er enkel wordt doorgestuurd dat er een nieuw bericht is, en de inhoud van dat bericht zelf apart moet opgehaald worden, blijft dit allemaal secure. De socket krijgt dus alleen maar informatie over nieuwe messages en de inhoud daarvan blijft achter de gewone API zitten.

Door gebruik te maken van reeds bestaande packages is dit eenvoudig te implementeren. We hebben voor het NodeJS stuk alleszins geen eigen code moeten schrijven maar volledig op het reeds bestaande pakket kunnen doorbouwen. Voor het gedeelte in Laravel hebben we een custom broadcast service en een custom notification class geschreven.

Aan de React kant van de applicatie kunnen we gebruik maken van een al bestaande socket.io implementatie, dus ook daarvoor hebben we kunnen steunen op een reeds bestaande code.

Meer weten over het project?

Lees je graag meer over hoe we deze case tot een succesvol platform hebben gemaakt?

Meer inzichten

  • SymfonyCon 2024: code in harmonie

    Editie 2024 van SymfonyCon vond plaats in het prachtige Wenen, dus een van onze experts ging ter plaatse. Even de nachttrein op, wat cultuur opsnuiven, en dan: volop focussen op twee dagen vol Symfony. Onze inzichten lees je in dit verslag! 

    SymfonyCon 2024: code in harmonie
  • Qodo: een AI-copiloot voor coderen en testen

    Recent kwamen we Qodo op het spoor: een tool die met behulp van Artificiële Intelligentie (AI) ons kan helpen coderen en testen. In deze blog lees je ons relaas van de eerste ervaringen.

    Qodo: een AI-copiloot voor coderen en testen
  • Lunar en Codana slaan de handen in elkaar

    Lunar en Codana slaan de handen in elkaar en gaan samen verder onder de naam Codana. Deze fusie creëert een digital product studio met meer dan 30 experts en een duidelijke ambitie: uitgroeien tot een toonaangevende speler op de Belgische en Europese markt.

    Lunar en Codana slaan de handen in elkaar
  • Het nieuw avontuur van Lore bij Codana

    Lore Vanderlinden vertelt je alles over haar avontuur bij Codana. Ze combineert een technische achtergrond als front-end ontwikkelaar met een passie voor ondernemen in haar rol als projectmanager. Ontdek hoe dat in zijn werk gaat in deze blog! 

    Het nieuw avontuur van Lore bij Codana
  • Van Stagiair naar Digital Project Manager bij Codana

    Wat begon als een zoektocht naar een stageplek, groeide uit tot een kans die Jelmer nooit had durven dromen: een vaste rol in een dynamisch en ambitieus bedrijf. Lees hier alles over zijn traject bij Codana.

    Van Stagiair naar Digital Project Manager bij Codana
  • Cross-platform applicaties met React Native

    Nog nooit was het ontwikkelen van native mobiele applicaties zo toegankelijk als vandaag. Bij Codana doen we dit door gebruik te maken het React Native, een open-source framework dat werd ontwikkeld door Meta.

    Cross-platform applicaties met React Native