Stuur live berichten en aanwezigheid met de JavaScript SDK
De dagelijkse stromen van aura.realtime, waarbij het gedrag van elke oproep wordt waargenomen tegen een lopende stapel.
1. Kanalen en hun status
Een kanaal is een benoemde kamer. Clients die dezelfde naam openen, ontvangen elkaars berichten. De client maakt vanzelf verbinding wanneer u zich abonneert.
Alleen verzenden na SUBSCRIBED. Voordien, of na een weigering, retourneert send() een status zoals not_connected of requires_subscription in plaats van te verzenden. Kanalen zijn afgestemd op uw project: twee projecten kunnen dezelfde naam gebruiken zonder elkaar te zien.
2. Berichten uitzenden
Tijdens een echte run ontving een tweede ingelogde client het bericht binnen twee seconden.
Het bericht dat u ontvangt, bevat de gebeurtenisnaam die aan de payload is toegevoegd: { "event": "ping", "n": 1, … }. Een payload met een eigen event-sleutel wordt geweigerd (channel.send geeft 'invalid_payload' terug, httpBroadcast geeft realtime_payload_event_reserved terug): hernoem de sleutel, bijvoorbeeld kind.
- Je ontvangt standaard niet je eigen berichten. Open het kanaal met
{ config: { broadcast: { self: true } } }om ze te ontvangen. - Een bericht bevat
id,topic,timestamp,eventenpayload.
3. Aanwezigheid
Aanwezigheid laat zien wie verbonden is met een kanaal, met een door u gekozen status.
presenceState() wordt gecodeerd op gebruikers-ID. Bij elk item worden de verbindingen van de gebruiker vermeld:
untrack() verwijdert je uit de lijst, en het verlaten van het kanaal of het sluiten van de pagina doet dat voor je.
4. Databasewijzigingen
postgres_changes werkt op projecten met een eigen database. Schakel eerst elke tabel in: PUT /v1/db/{project_id}/schema/tables/{table}/realtime met de body {"enabled": true} en een service_role-sleutel. Het luisteren begint zodra de eerste client zich abonneert en stopt enkele minuten nadat de laatste is vertrokken. Levering gebeurt minstens één keer: na een herstart van de server kan een wijziging twee keer aankomen, dus maak uw handler idempotent, bijvoorbeeld op basis van de primaire sleutel van de rij. Een druk cluster kan een nieuwe listener weigeren met een capaciteitsfout; probeer het kort daarna opnieuw. Geef het kanaal de naam van de tabel, db:public.<table>: op dat kanaal worden de wijzigingen gepubliceerd. De eerste abonnee kan tot 5 seconden aan wijzigingen ontvangen die vlak voor het abonneren zijn gedaan. Wijzigingen worden een uur bewaard voor herstel en daarna verwijderd. Is het cluster vol, dan mislukt het abonnement met capacité d'écoute postgres_changes atteinte pour la base de ce projet, réessayez. Blijft het luisteren langer dan een minuut weg, dan gaat het kanaal naar CHANNEL_ERROR; abonneer opnieuw zodra het hersteld is. Een storing die langer duurt dan het uur bewaring verliest de wijzigingen van die periode.
5. Opruimen
Bekijk de verbinding met aura.realtime.onStateChange(callback) en onError(callback). Na een onderbreking maakt de client vanzelf opnieuw verbinding, tenzij u setAutoReconnect(false) aanroept.