php Laravel Websockets dashboard基本路径与子文件夹不工作

vwhgwdsa  于 2023-10-15  发布在  PHP
关注(0)|答案(3)|浏览(150)

我对广播/websockets很陌生,我正在尝试设置Laravel Websockets和pusher。
使用我的subdomain.example.com,我可以让subdomain.example.com/laravel-websockets工作,当我使用php artisan tinker触发事件时,当我在页面上创建事件时,事件会在屏幕上列出。但是,我需要在路径subdomain.example.com/api/laravel-websockets内完成此工作
当我尝试使用/api的URL时,尽管它按预期加载了 Jmeter 板,但它无法连接,从控制台中可以看到它忽略了请求中的/api,例如。对于Auth:http://subdomain.example.com/laravel-websockets/auth而不是http://subdomain.example.com/api/laravel-websockets/auth。这适用于控制台中的所有内容。甚至当我在控制台中编辑请求以添加/api时,它也能工作。
有没有什么地方可以改变基本路径?
下面是我的.env文件:

APP_URL=http://subdomain.example.com/api/

LOG_CHANNEL=daily

BROADCAST_DRIVER=pusher
CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=sync

REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

APP_NAME==test
PUSHER_APP_ID=1234
PUSHER_APP_KEY=1234
PUSHER_APP_SECRET=secret
PUSHER_APP_CLUSTER=mt1

下面是我的config/websockets.php推流器配置

'dashboard' => [
    'port' => env('LARAVEL_WEBSOCKETS_PORT', 6001),
],

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

我的config/broadcasting.php

'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' => '127.0.0.1',
        'port' => 6001,
        'scheme' => 'http'
    ],
],

**编辑:**添加我的配置以显示/API如何工作,其中/var/www/example是我的Laravel应用程序的根文件夹

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName subdomain.example.com
    ServerAlias subdomain.example.com
    Alias /api /var/www/example/public
    <Directory /var/www/example/>
            Options Indexes FollowSymLinks
            AllowOverride All
            Require all granted
            RewriteEngine On
    </Directory>

    DocumentRoot /var/www/example/client-side
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

在public/.htaccess中,我有以下内容:

RewriteBase /api/

编辑

我看到如果我在dashboard.blade.php中将api/添加到JavaScript请求路径中,我可以让这个工作,这让我认为解决方案是运行该文件的版本。但我不认为这解决了整个问题。我宁愿正确地做这件事。(参见下面的authEndpoint

connect() {
            this.pusher = new Pusher(this.app.key, {
                wsHost: this.app.host === null ? window.location.hostname : this.app.host,
                wsPort: this.port === null ? 6001 : this.port,
                wssPort: this.port === null ? 6001 : this.port,
                wsPath: this.app.path === null ? '' : this.app.path,
                disableStats: true,
                authEndpoint: '/api/{{ request()->path() }}/auth',
                auth: {
                    headers: {
                        'X-CSRF-Token': "{{ csrf_token() }}",
                        'X-App-ID': this.app.id
                    }
                },
                enabledTransports: ['ws', 'flash']
            });
z6psavjg

z6psavjg1#

我正在使用Laravel 6.x,在dashboard.blade.php中,我在第121和165行用Request::getRequestUri()替换了request()->path(),这提供了一个动态解决方案,但我仍然不得不订购供应商dashboard.blade.php文件。在GitHub上开了一个问题。

unftdfkk

unftdfkk2#

我不会把这个标记为答案,直到有人有更好的建议,但我不得不覆盖dashboard.blade.php,并在resources/views/beyondcode/laravel-websockets/dashboard.blade.php中创建自己的一个,并在所有调用的地方添加/api
这实际上解决了另一个问题,我也有关于没有得到真实的时间图。

xjreopfe

xjreopfe3#

WebSocket Jmeter 板的默认位置是/laravel-websockets。路由会自动注册。您可以通过在config/websockets.php文件中更改路径设置来更改默认位置。
变更自:

/*
 * This path will be used to register the necessary routes for the package.
 */
'path' => 'laravel-websockets',

收件人:

/*
 * This path will be used to register the necessary routes for the package.
 */
'path' => 'api/laravel-websockets',

相关问题