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')
wsTarget: 'all'会广播到每个连接的 socket。wsTarget: 'socket:'.$wsSocket发送到一个 socket。- 基于令牌的目标定位允许你访问给定用户的每个 socket。
目标之后的内容是普通的 apply 指令:inner、outer、prepend、append、toast、scroll 等等。客户端将 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 页面。