![](/img/trans.png)
[英]Ratchet PHP Websockets: Private messaging (control who messages are being sent to)
[英]Ratchet PHP - Push messaging service
我使用 Ratchet 查看的大多数示例都用于聊天服务,我目前正在构建一个应用程序,用户可以在其中登录并根据其用户 ID 接收来自服务器的通知。
我有基本的教程,但是我很难理解几点:
当onOpen()
方法被调用时,我将$conn
对象设置为一个数组,如下所示:
$this->clients[$conn->resourceId]['conn'] = $conn;
在我的 Javascript 中,在onopen
函数中,我还使用send
函数发送了一个 JSON 有效负载。 我的服务器将它记录下来并像这样存储在onMessage
方法中:
$this->clients[$conn->resourceId]['json'] = $json;
所以现在我将连接的用户存储在一个数组中,如何向特定用户发送消息? 我查看了onSubscribe
和broadcast
无济于事,但真的不明白WampServerInterface
应该用于什么?
由于我自己的类是一个正在运行的脚本,因此我显然无法在其他任何地方创建它的新实例。 由于我的应用程序将发送用户特定的更新,因此我需要某种方式来执行以下操作:
使用另一个脚本获取当前连接的用户,在某处处理这些用户并返回他们可能拥有的任何更新,每 60 秒一次。 现在虽然这听起来像轮询,但它只会是一个连接,所以不会在服务器上密集 - 至少我是这么认为的。 那么我如何才能将我正在运行的服务器脚本与其他地方的其他“静态”PHP 脚本进行交互呢?
谢谢
$conn
参数是ConnectionInterface 的一个实现——它有一个send()
方法。 这就是您可以向客户端发送消息的方式。
Ratchet(通过 React.PHP)也支持 timers 。 所以如果没有外部依赖,你可以只使用$loop->addPeriodicTimer()
每 60 秒向每个客户端发送一次消息。
如果您需要根据某些外部依赖项(如 Web 服务器请求或 cron 脚本)发送消息,请使用 ZMQ( Ratchet 文档)。 这很简单。
查看我关于 PHP 中的 WebSockets 的幻灯片。 注释是捷克语,但您可以找到有用的源代码示例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.