3: 使用 wsCast 进行广播

wsCast 是处理程序向客户端推送的方式。它向 Phlo Realtime 发送消息,Phlo Realtime 将其分发到目标套接字,每个浏览器通过与您的 async routes 已经使用的相同 phlo.js apply 管道来应用它。

3.1: 目标

wsCast(wsTarget: 'all', inner: ['#online' => (string)$count])
wsCast(wsTarget: 'socket:'.$wsSocket, toast: 'Just for you')

目标之后的内容是普通的 apply 指令:innerouterprependappendtoastscroll 等等。客户端将 cast 视为对表单的响应,因此相同的视图更新代码适用于这两种传输方式。

3.2: wsCast 可能会失败;请进行保护。

wsCast 会向 Phlo Realtime 发起 HTTP 调用。如果 Phlo Realtime 没有运行,它会抛出异常。将其包装起来,以便您的处理程序的其余部分(以及您的普通 async 路径)能够继续工作:

function cast(...$args){
	try {
		wsCast(...$args)
	}
	catch (\Throwable $e){
	}
}

这个守卫使得当 Phlo Realtime 停止服务时,Phlo Realtime 应用能够优雅地降级为非实时应用。

3.3: 浏览器客户端

加载 DOM/websocket 资源会发送一个小型客户端。它 在页面主体具有 wss 类时打开一个套接字,自动重新连接,并应用传入的转换。要为页面启用实时功能,请将应用程序置于该模式(演示中设置 prop options = 'wss');如果不启用,则该页面就是一个普通的 Phlo 页面。

我们使用必要的cookie来使该网站正常工作。在您的许可下,我们还使用分析工具来改善网站。