laravel / reverb

Laravel Reverb provides a real-time WebSocket communication backend for Laravel applications.
https://reverb.laravel.com
MIT License
1.02k stars 71 forks source link

Echo Connected With Reverb Successfully In Local Valet Environment But Not Receving Events In The Frontend #154

Closed ritwikBiswas007 closed 4 months ago

ritwikBiswas007 commented 4 months ago

Reverb Version

@beta

Laravel Version

^11.0

PHP Version

8.2.1

Description

ENV File ` APP_NAME="Zepay Retail" APP_ENV=local APP_KEY=base64:epjDRbsy3TMxBhFYBoNgzR+FgHKrKgJzF359h3RUq3g= APP_DEBUG=true APP_URL=https://retail_zepay.test ASSET_URL=https://retail_zepay.test SPLADE_SSR_ENABLED=true LOG_CHANNEL=stack LOG_DEPRECATIONS_CHANNEL=null LOG_LEVEL=debug

DB_CONNECTION=mysql DB_PORT=3306 DB_DATABASE=retail_zepay DB_USERNAME=ritwik DB_PASSWORD=

BROADCAST_DRIVER=reverb CACHE_DRIVER=file FILESYSTEM_DISK=local QUEUE_CONNECTION=database SESSION_DRIVER=file SESSION_LIFETIME=120 BROADCAST_CONNECTION=reverb FILESYSTEM_DISK=local

MEMCACHED_HOST=memcached

REDIS_HOST=127.0.0.1 REDIS_PASSWORD=null REDIS_PORT=6379

MAIL_MAILER=smtp MAIL_HOST=sandbox.smtp.mailtrap.io MAIL_PORT=2525 MAIL_USERNAME=1d2039c73f1352 MAIL_PASSWORD=d94966202d6d4c MAIL_ENCRYPTION=tls MAIL_FROM_ADDRESS="no-reply@zepay.money" MAIL_FROM_NAME="${APP_NAME}"

AWS_ACCESS_KEY_ID= AWS_SECRET_ACCESS_KEY= AWS_DEFAULT_REGION=us-east-1 AWS_BUCKET= AWS_USE_PATH_STYLE_ENDPOINT=false

PUSHER_APP_ID= PUSHER_APP_KEY= PUSHER_APP_SECRET= PUSHER_HOST= PUSHER_PORT=8080 PUSHER_SCHEME=http PUSHER_APP_CLUSTER=mt1

VITE_APP_NAME="${APP_NAME}" VITE_PUSHER_APP_KEY="${PUSHER_APP_KEY}" VITE_PUSHER_HOST="${PUSHER_HOST}" VITE_PUSHER_PORT="${PUSHER_PORT}" VITE_PUSHER_SCHEME="${PUSHER_SCHEME}" VITE_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"

REVERB_APP_ID=365696 REVERB_APP_KEY=pmqwvmumzdefdifc7yki REVERB_APP_SECRET=nhvtrzvta3a2v3htyy4s REVERB_HOST=retail_zepay.test REVERB_PORT=3030 REVERB_SERVER_PORT=3030 REVERB_SCHEME=http REVERB_SSL_LOCAL_CERT="/Users/ritwikbiswas/.config/valet/Certificates/retail_zepay.test.crt" REVERB_SSL_LOCAL_PK="/Users/ritwikbiswas/.config/valet/Certificates/retail_zepay.test.key" REVERB_SSL_CA="/Users/ritwikbiswas/.config/valet/Certificates/retail_zepay.test.csr"

VITE_REVERB_APP_KEY="${REVERB_APP_KEY}" VITE_REVERB_HOST="${REVERB_HOST}" VITE_REVERB_PORT="${REVERB_PORT}" VITE_REVERB_SCHEME="${REVERB_SCHEME}"

MPLAN_API_KEY=62dd4fc6872957028d7248ccc8c05bdf ENABLE_2FA_QR=true

User Notification Event

` <?php

namespace App\Events;

use App\Models\Notification; use Illuminate\Broadcasting\Channel; use Illuminate\Broadcasting\InteractsWithSockets; use Illuminate\Broadcasting\PresenceChannel; use Illuminate\Broadcasting\PrivateChannel; use Illuminate\Contracts\Broadcasting\ShouldBroadcast; use Illuminate\Foundation\Events\Dispatchable; use Illuminate\Queue\SerializesModels; use Illuminate\Support\Facades\Log;

class UserNotification implements ShouldBroadcast { use Dispatchable, InteractsWithSockets, SerializesModels;

public function __construct()
{
}

public function broadcastOn()
{
    Log::info('Broadcasting on user-notification channel.');
    return new PrivateChannel('user-notification.1');
}

} `

Channels.php file

` <?php

use App\Models\Notification; use Illuminate\Support\Facades\Broadcast;

/* -------------------------------------------------------------------------- Broadcast Channels
Here you may register all of the event broadcasting channels that your
application supports. The given channel authorization callbacks are
used to check if an authenticated user can listen to the channel.

*/

// Broadcast::channel('App.Models.User.{id}', function ($user, $id) { // return (int) $user->id === (int) $id; // });

Broadcast::channel('user-notification.{userId}', function ($user, $userId) { return true; });

`

Broadcast Service Provider

` <?php

namespace App\Providers;

use Illuminate\Support\Facades\Broadcast; use Illuminate\Support\ServiceProvider;

class BroadcastServiceProvider extends ServiceProvider { /**

`

Echo.js

` import Echo from 'laravel-echo'; import Pusher from 'pusher-js'; window.Pusher = Pusher;

window.Echo = new Echo({ broadcaster: 'reverb', key: import.meta.env.VITE_REVERB_APP_KEY, wsHost: import.meta.env.VITE_REVERB_HOST, wsPort: import.meta.env.VITE_REVERB_PORT ?? 80, wssPort: import.meta.env.VITE_REVERB_PORT ?? 443, forceTLS: (import.meta.env.VITE_REVERB_SCHEME ?? 'https') === 'https', enabledTransports: ['ws', 'wss'], });

window.Echo.connector.pusher.connection.bind('error', function(err) { console.log('WebSocket Error', err); });

window.Echo.private('user-notification.1') .listen('.UserNotification', (e) => { console.log(e); }); `

reverb config

` <?php

return [

/*
|--------------------------------------------------------------------------
| Default Reverb Server
|--------------------------------------------------------------------------
|
| This option controls the default server used by Reverb to handle
| incoming messages as well as broadcasting message to all your
| connected clients. At this time only "reverb" is supported.
|
*/

'default' => env('REVERB_SERVER', 'reverb'),

/*
|--------------------------------------------------------------------------
| Reverb Servers
|--------------------------------------------------------------------------
|
| Here you may define details for each of the supported Reverb servers.
| Each server has its own configuration options that are defined in
| the array below. You should ensure all the options are present.
|
*/

'servers' => [

    'reverb' => [
        'host' => env('REVERB_SERVER_HOST', '0.0.0.0'),
        'port' => env('REVERB_SERVER_PORT', 8080),
        'hostname' => env('REVERB_HOST'),
        'options' => [
            'tls' => [
                'local_cert' => env('REVERB_SSL_LOCAL_CERT', null),
                'local_pk' => env('REVERB_SSL_LOCAL_PK', null),
                'verify_peer' => false
            ],
        ],
        'max_request_size' => env('REVERB_MAX_REQUEST_SIZE', 10_000),
        'scaling' => [
            'enabled' => env('REVERB_SCALING_ENABLED', false),
            'channel' => env('REVERB_SCALING_CHANNEL', 'reverb'),
        ],
        'pulse_ingest_interval' => env('REVERB_PULSE_INGEST_INTERVAL', 15),
    ],

],

/*
|--------------------------------------------------------------------------
| Reverb Applications
|--------------------------------------------------------------------------
|
| Here you may define how Reverb applications are managed. If you choose
| to use the "config" provider, you may define an array of apps which
| your server will support, including their connection credentials.
|
*/

'apps' => [
    'provider' => 'config',
    'apps' => [
        [
            'key' => env('REVERB_APP_KEY'),
            'secret' => env('REVERB_APP_SECRET'),
            'app_id' => env('REVERB_APP_ID'),
            'options' => [
                'host' => env('REVERB_HOST'),
                'port' => env('REVERB_PORT', 443),
                'scheme' => env('REVERB_SCHEME', 'https'),
                'useTLS' => env('REVERB_SCHEME', 'https') === 'https',
                'tls' => [
                    'local_cert' => '/Users/ritwikBiswas/.config/valet/Certificates/retail_zepay.test.crt',
                    'local_pk' => '/Users/ritwikBiswas/.config/valet/Certificates/retail_zepay.test.key',
                    'verify_peer' => false,

                    'verify_peer_name' => false,

                    'allow_self_signed' => true,

                    'cafile' => '/Users/ritwikBiswas/.config/valet/Certificates/retail_zepay.test.csr',
                ],
            ],
            'allowed_origins' => ['*'],
            'ping_interval' => env('REVERB_APP_PING_INTERVAL', 60),
            'max_message_size' => env('REVERB_APP_MAX_MESSAGE_SIZE', 10_000),
        ],
    ],
],

];

`

Broadcasting config

` <?php

return [

/*
|--------------------------------------------------------------------------
| Default Broadcaster
|--------------------------------------------------------------------------
|
| This option controls the default broadcaster that will be used by the
| framework when an event needs to be broadcast. You may set this to
| any of the connections defined in the "connections" array below.
|
| Supported: "reverb", "pusher", "ably", "redis", "log", "null"
|
*/

'default' => env('BROADCAST_CONNECTION', 'null'),

/*
|--------------------------------------------------------------------------
| Broadcast Connections
|--------------------------------------------------------------------------
|
| Here you may define all of the broadcast connections that will be used
| to broadcast events to other systems or over WebSockets. Samples of
| each available type of connection are provided inside this array.
|
*/

'connections' => [

    'reverb' => [
        'driver' => 'reverb',
        'key' => env('REVERB_APP_KEY'),
        'secret' => env('REVERB_APP_SECRET'),
        'app_id' => env('REVERB_APP_ID'),
        'options' => [
            'host' => env('REVERB_HOST'),
            'port' => env('REVERB_PORT', 443),
            'scheme' => env('REVERB_SCHEME', 'https'),
            'useTLS' => env('REVERB_SCHEME', 'https') === 'https',
        ],
        'client_options' => [
            // Guzzle client options: https://docs.guzzlephp.org/en/stable/request-options.html
        ],
    ],

    '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'),
            'host' => env('PUSHER_HOST') ?: 'api-'.env('PUSHER_APP_CLUSTER', 'mt1').'.pusher.com',
            'port' => env('PUSHER_PORT', 443),
            'scheme' => env('PUSHER_SCHEME', 'https'),
            'encrypted' => true,
            'useTLS' => env('PUSHER_SCHEME', 'https') === 'https',
        ],
        'client_options' => [
            // Guzzle client options: https://docs.guzzlephp.org/en/stable/request-options.html
        ],
    ],

    'ably' => [
        'driver' => 'ably',
        'key' => env('ABLY_KEY'),
    ],

    'log' => [
        'driver' => 'log',
    ],

    'null' => [
        'driver' => 'null',
    ],

],

];

`

Steps To Reproduce

Use Above Config & setup laravel with reverb & echo, You will find the issue

joedixon commented 4 months ago

Are you using the secure WebSockets (e.g wss://)? If so, can you change REVERB_SCHEME=https

ritwikBiswas007 commented 4 months ago

Yes I am using wss. Connection is successfully established. Received pusher ping pong event also. But not receiving the broadcast events

joedixon commented 4 months ago

Hey @ritwikBiswas007 do you have your queue running?

ritwikBiswas007 commented 4 months ago

Yes I am running queue:work

ritwikBiswas007 commented 4 months ago

It is running properly

jksa commented 4 months ago

Hi! I think this is same what I’m been struggled hours last few days! Here is some more details how this can be reproduced: Fresh install of Laravel 11, laravel/breeze + reverb. Link project to valet and change env REVERB_HOST to match your project and set REVERB_SCHEME to https. Create TestEvent -> add ShouldBroadcast interface and change PrivateChannel to Channel. Start reverb, run php artisan queue:work and from tinker dispatch TestEvent. From logs you can find this error: local.ERROR: cURL error 56: OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 0 Here is full stacktrace:

[2024-04-19 04:34:09] local.ERROR: cURL error 56: OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 0 (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for https://reverb-test.test:8080/apps/687468/events?auth_key=0ejtmavz8uzypitj07ka&auth_timestamp=1713501249&auth_version=1.0&body_md5=290a36791f069f26dc79082e40601c21&auth_signature=730210447b33447088602b095990bc583d6e1e39ef34c21e8ff7afcdcbf9e1f6 {"exception":"[object] (GuzzleHttp\\Exception\\RequestException(code: 0): cURL error 56: OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 0 (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for https://reverb-test.test:8080/apps/687468/events?auth_key=0ejtmavz8uzypitj07ka&auth_timestamp=1713501249&auth_version=1.0&body_md5=290a36791f069f26dc79082e40601c21&auth_signature=730210447b33447088602b095990bc583d6e1e39ef34c21e8ff7afcdcbf9e1f6 at /Users/juser/code/reverb-test/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php:211)
[stacktrace]
#0 /Users/juser/code/reverb-test/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php(158): GuzzleHttp\\Handler\\CurlFactory::createRejection(Object(GuzzleHttp\\Handler\\EasyHandle), Array)
#1 /Users/juser/code/reverb-test/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php(110): GuzzleHttp\\Handler\\CurlFactory::finishError(Object(GuzzleHttp\\Handler\\CurlHandler), Object(GuzzleHttp\\Handler\\EasyHandle), Object(GuzzleHttp\\Handler\\CurlFactory))
#2 /Users/juser/code/reverb-test/vendor/guzzlehttp/guzzle/src/Handler/CurlHandler.php(47): GuzzleHttp\\Handler\\CurlFactory::finish(Object(GuzzleHttp\\Handler\\CurlHandler), Object(GuzzleHttp\\Handler\\EasyHandle), Object(GuzzleHttp\\Handler\\CurlFactory))
#3 /Users/juser/code/reverb-test/vendor/guzzlehttp/guzzle/src/Handler/Proxy.php(28): GuzzleHttp\\Handler\\CurlHandler->__invoke(Object(GuzzleHttp\\Psr7\\Request), Array)
#4 /Users/juser/code/reverb-test/vendor/guzzlehttp/guzzle/src/Handler/Proxy.php(48): GuzzleHttp\\Handler\\Proxy::GuzzleHttp\\Handler\\{closure}(Object(GuzzleHttp\\Psr7\\Request), Array)
#5 /Users/juser/code/reverb-test/vendor/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php(64): GuzzleHttp\\Handler\\Proxy::GuzzleHttp\\Handler\\{closure}(Object(GuzzleHttp\\Psr7\\Request), Array)
#6 /Users/juser/code/reverb-test/vendor/guzzlehttp/guzzle/src/Middleware.php(31): GuzzleHttp\\PrepareBodyMiddleware->__invoke(Object(GuzzleHttp\\Psr7\\Request), Array)
#7 /Users/juser/code/reverb-test/vendor/guzzlehttp/guzzle/src/RedirectMiddleware.php(71): GuzzleHttp\\Middleware::GuzzleHttp\\{closure}(Object(GuzzleHttp\\Psr7\\Request), Array)
#8 /Users/juser/code/reverb-test/vendor/guzzlehttp/guzzle/src/Middleware.php(63): GuzzleHttp\\RedirectMiddleware->__invoke(Object(GuzzleHttp\\Psr7\\Request), Array)
#9 /Users/juser/code/reverb-test/vendor/guzzlehttp/guzzle/src/HandlerStack.php(75): GuzzleHttp\\Middleware::GuzzleHttp\\{closure}(Object(GuzzleHttp\\Psr7\\Request), Array)
#10 /Users/juser/code/reverb-test/vendor/guzzlehttp/guzzle/src/Client.php(333): GuzzleHttp\\HandlerStack->__invoke(Object(GuzzleHttp\\Psr7\\Request), Array)
#11 /Users/juser/code/reverb-test/vendor/guzzlehttp/guzzle/src/Client.php(169): GuzzleHttp\\Client->transfer(Object(GuzzleHttp\\Psr7\\Request), Array)
#12 /Users/juser/code/reverb-test/vendor/guzzlehttp/guzzle/src/Client.php(189): GuzzleHttp\\Client->requestAsync('POST', Object(GuzzleHttp\\Psr7\\Uri), Array)
#13 /Users/juser/code/reverb-test/vendor/guzzlehttp/guzzle/src/ClientTrait.php(95): GuzzleHttp\\Client->request('POST', 'apps/687468/eve...', Array)
#14 /Users/juser/code/reverb-test/vendor/pusher/pusher-php-server/src/Pusher.php(776): GuzzleHttp\\Client->post('apps/687468/eve...', Array)
#15 /Users/juser/code/reverb-test/vendor/pusher/pusher-php-server/src/Pusher.php(441): Pusher\\Pusher->post('/apps/687468/ev...', '{\"name\":\"App\\\\\\\\E...')
#16 /Users/juser/code/reverb-test/vendor/laravel/framework/src/Illuminate/Broadcasting/Broadcasters/PusherBroadcaster.php(161): Pusher\\Pusher->trigger(Array, 'App\\\\Events\\\\Test...', Array, Array)
#17 /Users/juser/code/reverb-test/vendor/laravel/framework/src/Illuminate/Collections/Traits/EnumeratesValues.php(237): Illuminate\\Broadcasting\\Broadcasters\\PusherBroadcaster->Illuminate\\Broadcasting\\Broadcasters\\{closure}(Object(Illuminate\\Support\\Collection), 0)
#18 /Users/juser/code/reverb-test/vendor/laravel/framework/src/Illuminate/Broadcasting/Broadcasters/PusherBroadcaster.php(160): Illuminate\\Support\\Collection->each(Object(Closure))
#19 /Users/juser/code/reverb-test/vendor/laravel/framework/src/Illuminate/Broadcasting/BroadcastEvent.php(92): Illuminate\\Broadcasting\\Broadcasters\\PusherBroadcaster->broadcast(Object(Illuminate\\Support\\Collection), 'App\\\\Events\\\\Test...', Array)
#20 /Users/juser/code/reverb-test/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\Broadcasting\\BroadcastEvent->handle(Object(Illuminate\\Broadcasting\\BroadcastManager))
#21 /Users/juser/code/reverb-test/vendor/laravel/framework/src/Illuminate/Container/Util.php(41): Illuminate\\Container\\BoundMethod::Illuminate\\Container\\{closure}()
#22 /Users/juser/code/reverb-test/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(93): Illuminate\\Container\\Util::unwrapIfClosure(Object(Closure))
#23 /Users/juser/code/reverb-test/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\Container\\BoundMethod::callBoundMethod(Object(Illuminate\\Foundation\\Application), Array, Object(Closure))
#24 /Users/juser/code/reverb-test/vendor/laravel/framework/src/Illuminate/Container/Container.php(662): Illuminate\\Container\\BoundMethod::call(Object(Illuminate\\Foundation\\Application), Array, Array, NULL)
#25 /Users/juser/code/reverb-test/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(128): Illuminate\\Container\\Container->call(Array)
#26 /Users/juser/code/reverb-test/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(144): Illuminate\\Bus\\Dispatcher->Illuminate\\Bus\\{closure}(Object(Illuminate\\Broadcasting\\BroadcastEvent))
#27 /Users/juser/code/reverb-test/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(119): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Broadcasting\\BroadcastEvent))
#28 /Users/juser/code/reverb-test/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(132): Illuminate\\Pipeline\\Pipeline->then(Object(Closure))
#29 /Users/juser/code/reverb-test/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(124): Illuminate\\Bus\\Dispatcher->dispatchNow(Object(Illuminate\\Broadcasting\\BroadcastEvent), false)
#30 /Users/juser/code/reverb-test/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(144): Illuminate\\Queue\\CallQueuedHandler->Illuminate\\Queue\\{closure}(Object(Illuminate\\Broadcasting\\BroadcastEvent))
#31 /Users/juser/code/reverb-test/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(119): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Broadcasting\\BroadcastEvent))
#32 /Users/juser/code/reverb-test/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(123): Illuminate\\Pipeline\\Pipeline->then(Object(Closure))
#33 /Users/juser/code/reverb-test/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(71): Illuminate\\Queue\\CallQueuedHandler->dispatchThroughMiddleware(Object(Illuminate\\Queue\\Jobs\\DatabaseJob), Object(Illuminate\\Broadcasting\\BroadcastEvent))
#34 /Users/juser/code/reverb-test/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(102): Illuminate\\Queue\\CallQueuedHandler->call(Object(Illuminate\\Queue\\Jobs\\DatabaseJob), Array)
#35 /Users/juser/code/reverb-test/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(439): Illuminate\\Queue\\Jobs\\Job->fire()
#36 /Users/juser/code/reverb-test/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(389): Illuminate\\Queue\\Worker->process('database', Object(Illuminate\\Queue\\Jobs\\DatabaseJob), Object(Illuminate\\Queue\\WorkerOptions))
#37 /Users/juser/code/reverb-test/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(176): Illuminate\\Queue\\Worker->runJob(Object(Illuminate\\Queue\\Jobs\\DatabaseJob), 'database', Object(Illuminate\\Queue\\WorkerOptions))
#38 /Users/juser/code/reverb-test/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(139): Illuminate\\Queue\\Worker->daemon('database', 'default', Object(Illuminate\\Queue\\WorkerOptions))
#39 /Users/juser/code/reverb-test/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(122): Illuminate\\Queue\\Console\\WorkCommand->runWorker('database', 'default')
#40 /Users/juser/code/reverb-test/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\Queue\\Console\\WorkCommand->handle()
#41 /Users/juser/code/reverb-test/vendor/laravel/framework/src/Illuminate/Container/Util.php(41): Illuminate\\Container\\BoundMethod::Illuminate\\Container\\{closure}()
#42 /Users/juser/code/reverb-test/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(93): Illuminate\\Container\\Util::unwrapIfClosure(Object(Closure))
#43 /Users/juser/code/reverb-test/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\Container\\BoundMethod::callBoundMethod(Object(Illuminate\\Foundation\\Application), Array, Object(Closure))
#44 /Users/juser/code/reverb-test/vendor/laravel/framework/src/Illuminate/Container/Container.php(662): Illuminate\\Container\\BoundMethod::call(Object(Illuminate\\Foundation\\Application), Array, Array, NULL)
#45 /Users/juser/code/reverb-test/vendor/laravel/framework/src/Illuminate/Console/Command.php(212): Illuminate\\Container\\Container->call(Array)
#46 /Users/juser/code/reverb-test/vendor/symfony/console/Command/Command.php(279): Illuminate\\Console\\Command->execute(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Illuminate\\Console\\OutputStyle))
#47 /Users/juser/code/reverb-test/vendor/laravel/framework/src/Illuminate/Console/Command.php(181): Symfony\\Component\\Console\\Command\\Command->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Illuminate\\Console\\OutputStyle))
#48 /Users/juser/code/reverb-test/vendor/symfony/console/Application.php(1049): Illuminate\\Console\\Command->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#49 /Users/juser/code/reverb-test/vendor/symfony/console/Application.php(318): Symfony\\Component\\Console\\Application->doRunCommand(Object(Illuminate\\Queue\\Console\\WorkCommand), Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#50 /Users/juser/code/reverb-test/vendor/symfony/console/Application.php(169): Symfony\\Component\\Console\\Application->doRun(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#51 /Users/juser/code/reverb-test/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(196): Symfony\\Component\\Console\\Application->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#52 /Users/juser/code/reverb-test/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1183): Illuminate\\Foundation\\Console\\Kernel->handle(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#53 /Users/juser/code/reverb-test/artisan(13): Illuminate\\Foundation\\Application->handleCommand(Object(Symfony\\Component\\Console\\Input\\ArgvInput))
#54 {main}
"}
ritwikBiswas007 commented 4 months ago

I am not getting any error

ritwikBiswas007 commented 4 months ago

an not receving any events also 😂

ritwikBiswas007 commented 4 months ago

When I added BROADCAST_CONNECTION=reverb I am getting this error in failed jobs

`Illuminate\Broadcasting\BroadcastException: Pusher error: cURL error 35: OpenSSL/3.2.1: error:80000002:system library::No such file or directory (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for https://retail_zepay.test:3030/apps/365696/events?auth_key=pmqwvmumzdefdifc7yki&auth_timestamp=1713506322&auth_version=1.0&body_md5=5b62639d48c26adca88e7654001e653f&auth_signature=6c4a495977ac90a504e6892d2dba07f0e237c6812fdecace85de15c7224a8638. in /Users/ritwikbiswas/Desktop/RBSS Infotech/retail_zepay/vendor/laravel/framework/src/Illuminate/Broadcasting/Broadcasters/PusherBroadcaster.php:164 Stack trace:

0 /Users/ritwikbiswas/Desktop/RBSS Infotech/retail_zepay/vendor/laravel/framework/src/Illuminate/Broadcasting/BroadcastEvent.php(92): Illuminate\Broadcasting\Broadcasters\PusherBroadcaster->broadcast(Object(Illuminate\Support\Collection), 'App\Events\User...', Array)

1 /Users/ritwikbiswas/Desktop/RBSS Infotech/retail_zepay/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\Broadcasting\BroadcastEvent->handle(Object(Illuminate\Broadcasting\BroadcastManager))

2 /Users/ritwikbiswas/Desktop/RBSS Infotech/retail_zepay/vendor/laravel/framework/src/Illuminate/Container/Util.php(41): Illuminate\Container\BoundMethod::Illuminate\Container{closure}()

3 /Users/ritwikbiswas/Desktop/RBSS Infotech/retail_zepay/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(93): Illuminate\Container\Util::unwrapIfClosure(Object(Closure))

4 /Users/ritwikbiswas/Desktop/RBSS Infotech/retail_zepay/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\Container\BoundMethod::callBoundMethod(Object(Illuminate\Foundation\Application), Array, Object(Closure))

5 /Users/ritwikbiswas/Desktop/RBSS Infotech/retail_zepay/vendor/laravel/framework/src/Illuminate/Container/Container.php(662): Illuminate\Container\BoundMethod::call(Object(Illuminate\Foundation\Application), Array, Array, NULL)

6 /Users/ritwikbiswas/Desktop/RBSS Infotech/retail_zepay/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(128): Illuminate\Container\Container->call(Array)

7 /Users/ritwikbiswas/Desktop/RBSS Infotech/retail_zepay/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(144): Illuminate\Bus\Dispatcher->Illuminate\Bus{closure}(Object(Illuminate\Broadcasting\BroadcastEvent))

8 /Users/ritwikbiswas/Desktop/RBSS Infotech/retail_zepay/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(119): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}(Object(Illuminate\Broadcasting\BroadcastEvent))

9 /Users/ritwikbiswas/Desktop/RBSS Infotech/retail_zepay/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(132): Illuminate\Pipeline\Pipeline->then(Object(Closure))

10 /Users/ritwikbiswas/Desktop/RBSS Infotech/retail_zepay/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(124): Illuminate\Bus\Dispatcher->dispatchNow(Object(Illuminate\Broadcasting\BroadcastEvent), false)

11 /Users/ritwikbiswas/Desktop/RBSS Infotech/retail_zepay/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(144): Illuminate\Queue\CallQueuedHandler->Illuminate\Queue{closure}(Object(Illuminate\Broadcasting\BroadcastEvent))

12 /Users/ritwikbiswas/Desktop/RBSS Infotech/retail_zepay/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(119): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}(Object(Illuminate\Broadcasting\BroadcastEvent))

13 /Users/ritwikbiswas/Desktop/RBSS Infotech/retail_zepay/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(123): Illuminate\Pipeline\Pipeline->then(Object(Closure))

14 /Users/ritwikbiswas/Desktop/RBSS Infotech/retail_zepay/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(71): Illuminate\Queue\CallQueuedHandler->dispatchThroughMiddleware(Object(Illuminate\Queue\Jobs\DatabaseJob), Object(Illuminate\Broadcasting\BroadcastEvent))

15 /Users/ritwikbiswas/Desktop/RBSS Infotech/retail_zepay/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(102): Illuminate\Queue\CallQueuedHandler->call(Object(Illuminate\Queue\Jobs\DatabaseJob), Array)

16 /Users/ritwikbiswas/Desktop/RBSS Infotech/retail_zepay/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(439): Illuminate\Queue\Jobs\Job->fire()

17 /Users/ritwikbiswas/Desktop/RBSS Infotech/retail_zepay/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(389): Illuminate\Queue\Worker->process('database', Object(Illuminate\Queue\Jobs\DatabaseJob), Object(Illuminate\Queue\WorkerOptions))

18 /Users/ritwikbiswas/Desktop/RBSS Infotech/retail_zepay/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(176): Illuminate\Queue\Worker->runJob(Object(Illuminate\Queue\Jobs\DatabaseJob), 'database', Object(Illuminate\Queue\WorkerOptions))

19 /Users/ritwikbiswas/Desktop/RBSS Infotech/retail_zepay/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(139): Illuminate\Queue\Worker->daemon('database', 'default', Object(Illuminate\Queue\WorkerOptions))

20 /Users/ritwikbiswas/Desktop/RBSS Infotech/retail_zepay/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(122): Illuminate\Queue\Console\WorkCommand->runWorker('database', 'default')

21 /Users/ritwikbiswas/Desktop/RBSS Infotech/retail_zepay/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\Queue\Console\WorkCommand->handle()

22 /Users/ritwikbiswas/Desktop/RBSS Infotech/retail_zepay/vendor/laravel/framework/src/Illuminate/Container/Util.php(41): Illuminate\Container\BoundMethod::Illuminate\Container{closure}()

23 /Users/ritwikbiswas/Desktop/RBSS Infotech/retail_zepay/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(93): Illuminate\Container\Util::unwrapIfClosure(Object(Closure))

24 /Users/ritwikbiswas/Desktop/RBSS Infotech/retail_zepay/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\Container\BoundMethod::callBoundMethod(Object(Illuminate\Foundation\Application), Array, Object(Closure))

25 /Users/ritwikbiswas/Desktop/RBSS Infotech/retail_zepay/vendor/laravel/framework/src/Illuminate/Container/Container.php(662): Illuminate\Container\BoundMethod::call(Object(Illuminate\Foundation\Application), Array, Array, NULL)

26 /Users/ritwikbiswas/Desktop/RBSS Infotech/retail_zepay/vendor/laravel/framework/src/Illuminate/Console/Command.php(212): Illuminate\Container\Container->call(Array)

27 /Users/ritwikbiswas/Desktop/RBSS Infotech/retail_zepay/vendor/symfony/console/Command/Command.php(279): Illuminate\Console\Command->execute(Object(Symfony\Component\Console\Input\ArgvInput), Object(Illuminate\Console\OutputStyle))

28 /Users/ritwikbiswas/Desktop/RBSS Infotech/retail_zepay/vendor/laravel/framework/src/Illuminate/Console/Command.php(181): Symfony\Component\Console\Command\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Illuminate\Console\OutputStyle))

29 /Users/ritwikbiswas/Desktop/RBSS Infotech/retail_zepay/vendor/symfony/console/Application.php(1049): Illuminate\Console\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))

30 /Users/ritwikbiswas/Desktop/RBSS Infotech/retail_zepay/vendor/symfony/console/Application.php(318): Symfony\Component\Console\Application->doRunCommand(Object(Illuminate\Queue\Console\WorkCommand), Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))

31 /Users/ritwikbiswas/Desktop/RBSS Infotech/retail_zepay/vendor/symfony/console/Application.php(169): Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))

32 /Users/ritwikbiswas/Desktop/RBSS Infotech/retail_zepay/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(196): Symfony\Component\Console\Application->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))

33 /Users/ritwikbiswas/Desktop/RBSS Infotech/retail_zepay/artisan(35): Illuminate\Foundation\Console\Kernel->handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))

34 {main}`

joedixon commented 4 months ago

It looks like there is an issue with Curl negotiating the SSL handshake with your custom certificate.

ritwikBiswas007 commented 4 months ago

I fixed by adding 'verify' => false, to client_options in broadcasting.php file