1

首先看这段代码:

use Ratchet\Resource\ConnectionInterface;

class MyApp {
protected $connections;

public function __construct() {
    $this->connections = new \SplObjectStorage;
}

public function onOpen(ConnectionInterface $conn) {
    $this->connections->attach($conn);
}

public function onClose(ConnectionInterface $conn) {
    $this->connections->detach($conn);
}
}

此代码接受套接字连接并将它们存储在 $connections 中。

认为当客户端打开套接字时,他们会向服务器发送哈希码以进行识别。因此,如果我有 1000 个连接到我的服务器,并且我想从另一个单独运行的 php 代码中向其中一些连接发送消息。我怎样才能做到这一点。如何访问连接列表?我如何识别谁是谁?

4

1 回答 1

0

我将打开的连接存储在关联数组中。即我为连接定义了一个有效的名称,因此可以通过原始数组访问来访问它们。

在您的情况下,要么定义连接,要么让客户端标识自己,以便您知道如何寻址。

    $this->connections = [];

    public function onOpen(ConnectionInterface $conn { 
        $conn->once('message',function(MessageInterface $msg) use ($conn) {
            $this->connections[$msg] = $conn;
        });
 });

(未经测试并使用我的手机编写,请原谅)

稍后您可以以相同的方式访问它们

$conn = $this->connections[$clientId];
于 2018-02-26T18:38:22.820 回答