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')

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.

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