PHP Websocket客户端+;ssl

PHP Websocket客户端+;ssl,php,ssl,websocket,client,Php,Ssl,Websocket,Client,有一个PHP Websocket客户端:repository。对于不牢固的连接,它也可以正常工作 我需要的是通过安全连接从php代码连接到websocket服务器。为了实现这个任务,我使用了上面的代码并对其进行了一些修改。WebSocketClient的connect()方法现在在我的代码中如下所示: public function connect() { $root = $this; if ($this->getPort() == 443) { $contex

有一个PHP Websocket客户端:repository。对于不牢固的连接,它也可以正常工作

我需要的是通过安全连接从php代码连接到websocket服务器。为了实现这个任务,我使用了上面的代码并对其进行了一些修改。WebSocketClient的connect()方法现在在我的代码中如下所示:

public function connect()
{
    $root = $this;
    if ($this->getPort() == 443) {
      $context = stream_context_create();
      stream_context_set_option($context, 'ssl', 'allow_self_signed', true);
      stream_context_set_option($context, 'ssl', 'verify_peer', false);
      $client = stream_socket_client("tls://{$this->getHost()}:{$this->getPort()}", $errno, $errstr, 30, STREAM_CLIENT_CONNECT, $context);
    } else {
      $client = stream_socket_client("tcp://{$this->getHost()}:{$this->getPort()}", $errno, $errstr);
    }
    if (!$client) {
        throw new RuntimeException('Cannot connect to socket ([#'.$errno.'] '.$errstr.')');
    }
    $this->setSocket(new Connection($client, $this->getLoop()));
    $this->getSocket()->on('data', function ($data) use ($root) {
        $data = $root->parseIncomingRaw($data);
        $root->parseData($data);
    });
    $this->getSocket()->write($this->createHeader());
    return $this;
}
结果,我几乎成功地连接到了服务器。Websocket服务器看到了我的连接,回答说一切正常,并将其写入日志

但不幸的是,库不知道它已成功连接到服务器

这个“如果”:

永远不会被处决。所以我无法建立联系

我还可以确认,如果我们使用80端口,一切都会像一个符咒一样工作

所以,如果你对为什么会发生这种情况有任何想法,我真的很感激。因为我已经没有想法了

致以最良好的祝愿,
Kostya

可能已经太晚了,但是您是否通过将xxx.pem证书添加到上下文中来检查“上下文SSL选项”->“本地证书”?
    if (base64_encode(pack('H*', sha1($this->key . '258EAFA5-E914-47DA-95CA-C5AB0DC85B11'))) === $response['Sec-Websocket-Accept']) {
        $this->connected = true;
    }