代码之家  ›  专栏  ›  技术社区  ›  Kiyarash

Laravel beyondcode websockets不连接

  •  0
  • Kiyarash  · 技术社区  · 6 年前

    我在用这个 Laravel websockets package 拥有自己的websocket服务器。

    package documentation ,我有这个配置:

    .env 设置:

    PUSHER_APP_ID=761772
    PUSHER_APP_KEY=qwerty
    PUSHER_APP_SECRET=secret
    PUSHER_APP_CLUSTER=ap2
    

        'pusher' => [
            'driver' => 'pusher',
            'key' => env('PUSHER_APP_KEY'),
            'secret' => env('PUSHER_APP_SECRET'),
            'app_id' => env('PUSHER_APP_ID'),
            'options' => [
                'cluster' => env('PUSHER_APP_CLUSTER'),
                'encrypted' => true,
                //'host' => '105.208.174.8', <--I did test this too
                'host' => '127.0.0.1',
                'port' => 6001,
                'scheme' => 'https'//<--Tested with http
            ],
        ],
    

    websockets.php:

    'apps' => [
        [
            'id' => env('PUSHER_APP_ID'),
            'name' => env('APP_NAME'),
            'key' => env('PUSHER_APP_KEY'),
            'secret' => env('PUSHER_APP_SECRET'),
            'enable_client_messages' => false,
            'enable_statistics' => true,
        ],
    ],
    

    bootstrap.js:

    /**
     * Echo exposes an expressive API for subscribing to channels and listening
     * for events that are broadcast by Laravel. Echo and event broadcasting
     * allows your team to easily build robust real-time web applications.
     */
    
    import Echo from 'laravel-echo'
    
    window.Pusher = require('pusher-js');
    
    window.Echo = new Echo({
        broadcaster: 'pusher',
        key: 'qwerty',
        wsHost: window.location.hostname,
        wsPort: 6001,
        disableStats: true,
        encrypted: true,
        enabledTransports: ['ws', 'wss'] //This was added from issue 86
    
    });
    

    This is issue number 86 in package repository

    我用letsencrypt和我的 directadmin control panel 这是我的 SSL 部分 websockets.php 配置:

        'ssl' => [
        /*
         * Path to local certificate file on filesystem. It must be a PEM encoded file which
         * contains your certificate and private key. It can optionally contain the
         * certificate chain of issuers. The private key also may be contained
         * in a separate file specified by local_pk.
         */
        //'local_cert' => null,
        'local_cert' => '/home/myDomain/domains/myDomain/public_html/vendor/react/socket/examples/localhost.pem',
          //'local_cert' => '/usr/local/directadmin/data/users/myDomain/domains/myDomain.ir.cert',
        /*
         * Path to local private key file on filesystem in case of separate files for
         * certificate (local_cert) and private key.
         */
        //'local_pk' => null,
        'local_pk' => '/usr/local/directadmin/data/users/myDomain/domains/myDomain.ir.key',
    
        /*
         * Passphrase for your local_cert file.
         */
        'passphrase' => null,
        ],
    

    但是当我使用 php artisan websockets:serve ,似乎连接和 myDomain.com/laravel-websockets

    频道当前状态不可用

    Firefox无法与wss://myDomain.ir:6001/app/qwerty上的服务器建立连接?protocol=7&client=js&version=4.3.1&flash=false。

    推进器,最小js:8:6335 连接到wss://myDomain.ir:6001/app/qwerty?在加载页面时,protocol=7&client=js&version=4.3.1&flash=false被中断。

    有人知道我的问题是什么吗?我该怎么解决?

    0 回复  |  直到 6 年前
        1
  •  0
  •   CodeFreak    6 年前

    我也遇到了同样的问题,我在使用Homestead,你在Homestead上吗,如果是这样的话,你应该使用supervisor(基于Debian)或supervisord(基于REDHat)操作系统来运行laravel套接字,而不必在任何时候手动输入“php artism websockets:serve”命令。

    您可以参考本文档。 https://docs.beyondco.de/laravel-websockets/1.0/basic-usage/starting.html#restricting-the-listening-host

    对于SSL,我还遵循了本文档和代客泊车: https://docs.beyondco.de/laravel-websockets/1.0/basic-usage/ssl.html#usage-with-laravel-valet

        2
  •  0
  •   mchev    5 年前

    我有同样的问题,问题是本地证书和本地密钥的读取访问。

    sudo php artisan websocket:serve 如果这就是问题所在。

    如果是这样的话,添加对文件的读访问权限,或者使用具有/etc/supervisor/conf.d/websockets.conf中的访问权限的用户

    推荐文章