Php Rachet中的实时一对一消息

Php Rachet中的实时一对一消息,php,ratchet,Php,Ratchet,我正在学习Ratchet(PHP中用于实时聊天应用程序的库)。根据文档,以下功能将接收两件事情: 消息是从谁那里来的 信息 然而,它却忽略了该派谁去。此功能将消息发送给所有连接的人。但是我也想实现一对一的聊天。有办法吗 以下是该库的链接: 我建议您根据用户需要对每个聊天进行不同的订阅 每个人之间聊天信息的一个频道:subscriptionname=room123 对于每个个人聊天,您可以使用不同的签名:subscriptionname=personal456 然后让客户端应用程序侦听2个不同的订

我正在学习Ratchet(PHP中用于实时聊天应用程序的库)。根据文档,以下功能将接收两件事情:

  • 消息是从谁那里来的
  • 信息
  • 然而,它却忽略了该派谁去。此功能将消息发送给所有连接的人。但是我也想实现一对一的聊天。有办法吗

    以下是该库的链接:


    我建议您根据用户需要对每个聊天进行不同的订阅

    每个人之间聊天信息的一个频道:subscriptionname=room123

    对于每个个人聊天,您可以使用不同的签名:subscriptionname=personal456


    然后让客户端应用程序侦听2个不同的订阅,并根据接收消息的订阅的名称尝试路由它。

    是的,您可以执行一对一消息。然而,这些仍然必须通过套接字服务器——您无法在浏览器之间直接进行对等消息传递。每个用户都有一个永久打开的连接,但仅与服务器连接

    您需要做的是针对每个客户端连接存储用户名,以便在遍历
    $this->clients
    时,可以检索连接或用户名。然后,您可以向所有订阅者广播此列表,但必须遵守您的设计所要求的任何隐私限制

    最后,每个用户可以通过指定以下内容发送私人消息:

    • 消息文本
    • 地址为的用户名
    这将由Ratchet接收,从那里您可以使用用户名在
    $This->clients
    中进行连接查找。如果仍处于打开状态,则最终的连接是用于转发消息的连接


    您可以选择向发端人发送一个“确认”(确认),说明他们的消息已(或未)送达。

    根据文档,筛选出客户端的问题是,连接对象被重用,这意味着您实际上可以有多个客户端共享同一个连接对象

    它不是已经有空间限制一对一的消息吗?dunno以前从未使用过它。你可以试试@sugumar。如果你能发布你最终是如何做到的,那就太好了,因为像我这样的人都来寻找答案;)请考虑在您的应答器中添加更多信息,我尝试使用R棘ter实现一对一聊天,但是RrChET文档读到,连接对象是共享的,据我所知,这意味着,可能存在两个或多个客户端共享单个连接对象的场景。考虑到API可以向连接对象发送消息,我们可能会遇到这样的情况:两个或多个客户端从服务器接收相同的消息,即使它们完全是不同的客户端
    public function onMessage(ConnectionInterface $from, $msg) {
        //send the message to all the other clients except the one who sent.
        foreach ($this->clients as $client) {
            if ($from !== $client) {
                $client->send($msg);
            }
        }
    }