首页 > 解决方案 > 使用 Laravel + Ratchet PHP 启用 TLS 时,JS 客户端出现连接错误 1006

问题描述

我在我的 laravel 应用程序中运行 Ratchet 服务器,并且 websocket 在默认配置中运行良好,如棘轮文档中所述,但是当我尝试使用 ReactPHP 的 SecureServer 启用 TLS 时,我无法连接到 WebSocket 服务器。这是我用于启用 TLS 的版本的代码:

$server = new HttpServer(
            new WsServer(
                new $controller(config('app.debug')) // Controller that implements MessageComponentInterface
            )
        );

        $loop = Loop::get();

        $secure_websockets = new Server('0.0.0.0:'.$port, $loop);
        $secure_websockets = new SecureServer($secure_websockets, $loop, [
            'local_cert' => config('websockets.cert'),
            'local_pk' => config('websockets.key'),
            'verify_peer' => false
        ]);

        $secure_websockets_server = new IoServer($server, $secure_websockets, $loop);
        $secure_websockets_server->run();

对于有效的版本(但没有 TLS),这是我正在使用的代码:

$server = IoServer::factory(
            new HttpServer(
                new WsServer(
                    new WebSocketController()
                )
            ),
            $port,
        );
        $server->run();

证书文件包含“-----BEGIN PUBLIC KEY-----”部分,密钥文件包含“-----BEGIN RSA PRIVATE KEY-----”部分。这两个文件都是使用 OpenSSL RSA 2048 生成的。

标签: phplaravelsslratchetreactphp

解决方案


推荐阅读