Kennisbank/Notificaties & realtime/Realtime in de deal room (en op de twee andere plekken)
02Notificaties & realtime3 min lezen

Realtime in de deal room (en op de twee andere plekken)

Welke drie schermen op live databasewijzigingen zijn geabonneerd, waarom het auction lot daarnaast op een timer tikt, en waarom de inventory list er niet bij staat.

Polling-loops op een warehousetablet zijn een uitstekende manier om een batterij leeg te trekken en een vloernetwerk te verzadigen. Het platform duwt in de plaats daarvan Postgres change events over een WebSocket — maar alleen daar waar twee mensen in dezelfde seconde op hetzelfde object handelen, en dat blijken drie schermen te zijn.

De drie

De deal room abonneert zich op de berichten, de biedingen en de statusrow van de deal zelf, gefilterd op die ene deal: een tegenbod dat in Rotterdam getypt wordt, verschijnt in Hamburg zonder dat een van beide kanten herlaadt. De notificatiebel abonneert zich op jouw meldingen, zodat de ongelezenteller vanzelf beweegt. Het auction lot abonneert zich op het lot en op de biedingen: het huidige hoogste bod en het sluitmoment bereiken iedereen die kijkt, en dat je eigen bod van winnend naar overboden kantelt, is wat de outbid-status op het scherm aanstuurt. Dat is de volledige lijst.

Row-level security reist mee met het event

De regels die bepalen wat je mag lezen, bepalen wat je mag ontvangen. Lotupdates zijn leesbaar voor elke bieder, dus een nieuw hoogste bod verspreidt zich over tenants heen. Bidrows zijn alleen van je eigen tenant, dus je ziet je bod verslagen worden zonder ooit het bod te zien dat het versloeg. De browser abonneert zich, er komt een event binnen, de component leest de betrokken data opnieuw en rendert opnieuw. Geen polling-loop, en geen toevallig kijkgaatje in andermans boek.

De extra hartslag van het lot

De lotpagina van een veiling ververst zichzelf daarnaast permanent elke 30 seconden, naast het abonnement. Het is geen fallback die aanslaat wanneer de socket faalt — niets detecteert dat — het is een vangnet voor een socket die stilletjes wegviel en dat nooit vertelde. Dertig seconden is een bewust getal: kort genoeg dat een gemist event je een halve minuut kost, lang genoeg dat een dozijn open lottabs niet om de paar seconden hun galerijthumbnails opnieuw rendert en opnieuw signeert.

Wat niet live is, en waarom dat prima is

Inventory lists, receiving sessions en de rapportageschermen abonneren zich op niets. Ze lezen wanneer je ze opent en opnieuw na je eigen actie. Een pallet verandert niet terwijl je ernaar kijkt, en een collega die drie gangen verderop een laptop verkoopt, verandert niets aan wat jij met die in je handen moet doen. Live updates horen op de schermen waar iemand anders hetzelfde stuk verplaatst; overal elders zijn ze een batterijrekening met een abonnement.