5: De WebSocket-laag

Phlo Realtime is de ingebouwde WebSocket-server van de daemon: de daemon bezit de sockets en draait je PHP-hooks in hetzelfde proces. Dit is hoe dat samenkomt, en een goed model voor hoe de functies van de daemon zich verhouden.

5.1: In-process, geen aparte service

De WebSocket-server (de ws bibliotheek) bevindt zich binnen de daemon. Het beheert de verbindingen, het clientregister en de /message broadcastbrug, en draait geen eigen PHP: voor elk socket-evenement dispatcht het de bijbehorende websocket::<hook> target op de eigen pool van de daemon, in-process. Dus de keuze tussen eenmalig en resident is gewoon de buildmodus van de host (wat de daemon al doet voor die host), niet een aparte WebSocket-instelling; het dispatchpad is in beide gevallen identiek.

Het koppelt elke verbinding's Host aan een app via het register van de daemon, de host-naar-app kaart die is gedeclareerd in config/daemon.js (de 4e argument van de daemon). Een host zonder invoer faalt de dispatch, wat de upgrade faalt.

5.2: De gebeurtenisstroom

Socket evenement Verzonden als Opmerkingen
handshake websocket::auth Wordt uitgevoerd voordat de socket wordt geaccepteerd; een expliciete false (of een gegooide fout) weigert het. Een ontbrekende token cookie weigert het outright.
accepted websocket::connect Opzetten; een false hier sluit de socket.
message websocket::receive Verzonden met stream: true, zodat geprinte regels terugvloeien naar de afzender terwijl ze worden geproduceerd.
disconnect websocket::close Opruimen.

De websocket resource van de engine koppelt deze doelen aan jouw gewone wsAuth / wsConnect / wsReceive / wsClose functies; een ontbrekende functie betekent "accepteren en niets doen". Dit is het volledige verhaal aan de app-kant dat wordt behandeld in de WebSocket handleiding en het WebSocket hoofdstuk van de gids.

5.3: Andere relaties

5.4: Het uitvoeren ervan

De daemon is één proces. Voer het uit onder een supervisor:

pm2 start config.js --name phlo-daemon
pm2 save

Het bindt aan localhost; beëindig wss:// bij je reverse proxy en stuur /websocket door naar de poort van de daemon.

We gebruiken essentiële cookies om deze site te laten werken. Met uw toestemming gebruiken we ook analytics om de site te verbeteren.