3: Broadcasten met wsCast
wsCast is hoe een handler naar clients pusht. Het plaatst een bericht naar Phlo Realtime, dat het verspreidt naar de doel-sockets, en elke browser past het toe via dezelfde phlo.js apply-pijplijn die je async routes al gebruiken.
3.1: Doelen
wsCast(wsTarget: 'all', inner: ['#online' => (string)$count])
wsCast(wsTarget: 'socket:'.$wsSocket, toast: 'Just for you')
wsTarget: 'all'zendt naar elke verbonden socket.wsTarget: 'socket:'.$wsSocketverzendt naar één socket.- Token-gescopeerde targeting stelt je in staat om elke socket voor een bepaalde gebruiker te bereiken.
Alles na de target is een gewone apply-instructie: inner, outer, prepend, append, toast, scroll, enzovoort. De client behandelt een cast precies zoals de reactie op een formulier, zodat dezelfde view-updatecode voor beide transporten werkt.
3.2: wsCast kan falen; bescherm het
wsCast maakt een HTTP-aanroep naar Phlo Realtime. Als Phlo Realtime niet draait, wordt er een fout gegooid. Wikkel het zodat de rest van je handler (en je gewone async pad) blijft werken:
function cast(...$args){
try {
wsCast(...$args)
}
catch (\Throwable $e){
}
}
Deze guard zorgt ervoor dat een Phlo Realtime-app netjes degradeert naar een niet-realtime-app wanneer Phlo Realtime niet beschikbaar is.
3.3: De browserclient
Het laden van de DOM/websocket resource levert een kleine client. Het opent een socket alleen wanneer de pagina body de klasse wss heeft, maakt automatisch opnieuw verbinding en past binnenkomende casts toe. Om realtime in te schakelen voor een pagina, zet je de app in die modus (de demo stelt prop options = 'wss' in); laat het uit en dezelfde pagina is een normale Phlo pagina.