Testclient: losmaken maakt nu werkelijk los

Gemeld door de gebruiker: een eigenaar uit het register halen liet de relay hem
zien tot het proces stopte. `vergeet` koppelt netjes af, maar de socket zit niet
in de Evolu-instantie: hij zit in de gedeelde worker, en die blijft staan zolang
er nog een eigenaar open is. Een transport dat je in de config van `createEvolu`
meegeeft, kun je daarna nergens opzeggen.

Nu start de instantie met `transports: []` en gaat de transport erin met
`evolu.useOwner`, ook al is het de eigen appOwner. Die geeft een opzegging terug
en Evolu telt de verwijzingen, dus de laatste opzegging sluit de socket.

Bewezen met een wegwerpproef tegen een relay op localhost die iedereen toelaat:
twee eigenaars open, dan de ene sluiten. Gemeten in de verbindingstabel van het
besturingssysteem en niet met de `dicht`-melding van de cliënt, want
`closeSocket` in @evolu/common zet `socket.onclose` op null voordat het sluit.
Oude vorm: 2 verbindingen na het sluiten. Nieuwe vorm: 1, en de andere eigenaar
kon daarna nog schrijven.

Suite groen: 42, 90, 36, 22, 54 en 68 goed, 0 fout.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Harmen
2026-09-10 09:55:05 +02:00
co-authored by Claude Opus 5
parent e4b0aa5df9
commit 090843a523
4 changed files with 51 additions and 2 deletions
@@ -1,5 +1,24 @@
# Voortgang - Testclient
## 10-09-2026 - losmaken maakte niets los
Gemeld door de gebruiker: hij haalde een eigenaar uit het register, de rij verdween uit het bedieningsvlak,
en de relay bleef hem zien tot het proces stopte. Dat was geen vergissing in `vergeet`: die koppelt netjes
af. De socket zit niet in de Evolu-instantie maar in de gedeelde worker, en die blijft staan zolang er nog
één eigenaar open is. Een transport dat je in de config van `createEvolu` meegeeft, kun je daarna nergens
meer opzeggen.
De uitweg staat in de API zelf: `createEvolu` starten met `transports: []` en de transport erna met
`evolu.useOwner` erin zetten, ook al is het de eigen appOwner. Die geeft een opzegging terug en Evolu telt
de verwijzingen, dus de laatste opzegging sluit de socket werkelijk.
**Bewezen met een wegwerpproef tegen een relay op localhost die iedereen toelaat, want tegen de echte relay
is er niets te meten:** een geweigerde eigenaar levert nauwelijks verkeer op. Twee eigenaars open, dan de
ene sluiten. De maat is de verbindingstabel van het besturingssysteem en niet de `dicht`-melding van de
cliënt: `closeSocket` in `@evolu/common` zet `socket.onclose` op null vóórdat het sluit, dus een sluiting
die je zelf veroorzaakt meldt zichzelf nooit. Met de oude vorm bleven het 2 verbindingen, met de nieuwe
werd het 1, en de andere eigenaar kon daarna nog schrijven.
## 09-09-2026 - plan geschreven, gepromoveerd, en de samenstelling werkt
Het masterplan is geschreven en dezelfde dag gepromoveerd naar `Actief/003-Testclient/`, op verzoek van de