laravel-5 - 如何配置 WebSocket 服务器以接受安全连接请求

标签 laravel-5 websocket ratchet

在应用 ssl(我从 cloudflare 获取)之前,我的网站是通过 http 加载的,而我的套接字连接是通过 ws 建立的
它工作正常并且连接成功。

conn = new WebSocket('ws://myDomain:8090');



但是在我的网站通过 https 加载时应用 ssl 后,我使用 wss(否则会出错)

conn = new WebSocket('wss://myDomain:8090');



现在它给了我错误

WebSocket connection to 'wss://myDomain:8090/' failed: Error in connection establishment: net::ERR_CONNECTION_TIMED_OUT



websocket 服务器是通过 8090 端口启动的,我也将端口更改为 9991 但无济于事。

这是 websocket 服务器的代码
public function handle()
{
    $server = IoServer::factory(
        new HttpServer(
            new WsServer(
                new WebSocketController()
            )
        ),
        8090
    );
    $server->run();
}

我没有将 apache 配置为运行 websocket 服务器来接受安全连接请求。 可能是因为这个我收到了一个错误。这意味着我正在向不安全的 websocket 服务器发送安全连接请求。如果我是对的,你能告诉我我如何配置我的 websocket 服务器,以便它可以接受安全连接请求。

我再次告诉您,我使用的是来自 cloudflare 的 SSL。 我告诉我我的域,他们为我提供了名称服务器以将其替换为我现有的名称服务器。

我要求你给出一个明确的解决方案来解决这个问题。 我没有使用 nginx,我在 Lampp 上使用 apache。

最佳答案

有人解决了我的问题。所以我在这里发布解决方案以帮助其他人。我犯了两个错误。

  • 我正在使用来自 cloudflare 的 SSL,这会导致一些问题。所以我买了一个付费的 SSL 证书。
  • 我没有为 wss 配置我的 websocket 服务器

  • 所以这里是使用 Ratchet 在 Laravel 中为 wss 配置 websocket 服务器的代码
    public function handle()
    {
    
        $loop   = Factory::create();
        $webSock = new SecureServer(
            new Server('0.0.0.0:8090', $loop),
            $loop,
            array(
                'local_cert'        => '', // path to your cert
                'local_pk'          => '', // path to your server private key
                'allow_self_signed' => TRUE, // Allow self signed certs (should be false 
                                                in production)
                'verify_peer' => FALSE
            )
        );
        // Ratchet magic
        $webServer = new IoServer(
            new HttpServer(
                new WsServer(
                    new WebSocketController()
                )
            ),
            $webSock
        );
        $loop->run();
    
    }
    

    关于laravel-5 - 如何配置 WebSocket 服务器以接受安全连接请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55097326/

    相关文章:

    php - Laravel 5.0 多认证

    php - composer install - 您的要求无法解析为一组可安装的软件包

    websocket - 在同一端口上运行 websocket 和 http 服务器(Rust、hyper)

    javascript - Backbone.js 使用 native websockets 同步

    php - 访问 Ratchet 网络套接字请求中的额外参数

    javascript - 重定向到 cordova 应用程序中的另一个页面后无法运行 javascript

    smtp - Mailgun、Mandrill 和 Ses Driver,SMTP 和 phpmailer,在 Laravel 5.1 中使用哪一个?

    php - Laravel 5 日志中的最大文件

    java-server websocket 失败 : Error during WebSocket handshake: Unexpected response code: 404

    php - Ratchet session 存储