laravel / reverb

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

I have issue in reverb broadcasting #182

Closed purnada closed 2 months ago

purnada commented 2 months ago
          I have same problem. 

This code is work in localhost but when i push this code to the production server it will not work.. reverb connection is success but when i want to broadcast the event it throw the error

This is the connection status

image

my .env

BROADCAST_CONNECTION=reverb VITE_APP_NAME="${APP_NAME}"

REVERB_SERVER_HOST=127.0.0.1 REVERB_SERVER_PORT=8080

REVERB_APP_ID=920552 REVERB_APP_KEY=mop6z2fyoey59fm7l3ro REVERB_APP_SECRET=eehaek3gn748kcyfcqxq REVERB_HOST="reverb.xxxx.com" REVERB_PORT=443 REVERB_SCHEME=https

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

my broadcast config is

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
            ],
        ],
]

my event file is

namespace App\Events;

use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Contracts\Broadcasting\ShouldBroadcastNow;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Queue\SerializesModels;

class MessageTypingEvent implements ShouldBroadcastNow
{
    use Dispatchable, InteractsWithSockets, SerializesModels;

    public $from;

    public $to;

    public $type;

    /**
     * Create a new event instance.
     */
    public function __construct($from,$to,$type)
    {
        $this->from = $from;
        $this->to = $to;
        $this->type = $type;

    }

    /**
     * Get the channels the event should broadcast on.
     *
     * @return array<int, \Illuminate\Broadcasting\Channel>
     */
    public function broadcastOn(): array
    {
        return [
            new PrivateChannel('message_typing'.$this->to),
        ];
    }
}

when i call this function

public function removeReading($id)
    {

        MessageTypingEvent::dispatch(auth()->user()->id, $id,'stop');
    }

my route is

Broadcast::channel('message_typing{id}', function($user,$id){
    return (int) $user->id === (int) $id;
});

it through the error is

. {"userId":4,"exception":"[object] (Illuminate\Broadcasting\BroadcastException(code: 0): Pusher error: at /var/www/xxxx/vendor/laravel/framework/src/Illuminate/Broadcasting/Broadcasters/PusherBroadcaster.php:164)

Originally posted by @purnada in https://github.com/laravel/reverb/issues/176#issuecomment-2089899961

joedixon commented 2 months ago

Sorry, didn't see this new issue when I replied to your comment on #176.

If you start the server with php artisan reverb:start --debug, so you see any logs which provide more information?

purnada commented 2 months ago

reverb

this is the result when i run server with php artisan reverb:start --debug

purnada commented 2 months ago

This is the full error log

Pusher error: Just a moment...
. {"userId":4,"exception":"[object] (Illuminate\\Broadcasting\\BroadcastException(code: 0): Pusher error: Just a moment...
. at /var/www/hrms/vendor/laravel/framework/src/Illuminate/Broadcasting/Broadcasters/PusherBroadcaster.php:164) |   -- | --
purnada commented 2 months ago

[stacktrace]

0 /var/www/hrms/vendor/laravel/framework/src/Illuminate/Broadcasting/BroadcastEvent.php(92): Illuminate\Broadcasting\Broadcasters\PusherBroadcaster->broadcast()

1 /var/www/hrms/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\Broadcasting\BroadcastEvent->handle()

2 /var/www/hrms/vendor/laravel/framework/src/Illuminate/Container/Util.php(41): Illuminate\Container\BoundMethod::Illuminate\Container\{closure}()

3 /var/www/hrms/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(93): Illuminate\Container\Util::unwrapIfClosure()

4 /var/www/hrms/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\Container\BoundMethod::callBoundMethod()

5 /var/www/hrms/vendor/laravel/framework/src/Illuminate/Container/Container.php(662): Illuminate\Container\BoundMethod::call()

6 /var/www/hrms/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(128): Illuminate\Container\Container->call()

7 /var/www/hrms/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(144): Illuminate\Bus\Dispatcher->Illuminate\Bus\{closure}()

8 /var/www/hrms/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(119): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()

9 /var/www/hrms/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(132): Illuminate\Pipeline\Pipeline->then()

10 /var/www/hrms/vendor/laravel/framework/src/Illuminate/Broadcasting/BroadcastManager.php(182): Illuminate\Bus\Dispatcher->dispatchNow()

11 /var/www/hrms/vendor/laravel/framework/src/Illuminate/Events/Dispatcher.php(357): Illuminate\Broadcasting\BroadcastManager->queue()

12 /var/www/hrms/vendor/laravel/framework/src/Illuminate/Events/Dispatcher.php(280): Illuminate\Events\Dispatcher->broadcastEvent()

13 /var/www/hrms/vendor/laravel/framework/src/Illuminate/Events/Dispatcher.php(266): Illuminate\Events\Dispatcher->invokeListeners()

14 /var/www/hrms/vendor/laravel/framework/src/Illuminate/Foundation/helpers.php(453): Illuminate\Events\Dispatcher->dispatch()

15 /var/www/hrms/vendor/laravel/framework/src/Illuminate/Foundation/Events/Dispatchable.php(14): event()

16 /var/www/hrms/app/Livewire/ChatBox.php(330): App\Events\MessageTypingEvent::dispatch()

17 /var/www/hrms/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): App\Livewire\ChatBox->removeReading()

18 /var/www/hrms/vendor/laravel/framework/src/Illuminate/Container/Util.php(41): Illuminate\Container\BoundMethod::Illuminate\Container\{closure}()

19 /var/www/hrms/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(93): Illuminate\Container\Util::unwrapIfClosure()

20 /var/www/hrms/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\Container\BoundMethod::callBoundMethod()

21 /var/www/hrms/vendor/livewire/livewire/src/Wrapped.php(23): Illuminate\Container\BoundMethod::call()

22 /var/www/hrms/vendor/livewire/livewire/src/Features/SupportEvents/SupportEvents.php(29): Livewire\Wrapped->__call()

23 /var/www/hrms/vendor/livewire/livewire/src/ComponentHook.php(41): Livewire\Features\SupportEvents\SupportEvents->call()

24 /var/www/hrms/vendor/livewire/livewire/src/ComponentHookRegistry.php(110): Livewire\ComponentHook->callCall()

25 /var/www/hrms/vendor/livewire/livewire/src/ComponentHookRegistry.php(65): Livewire\ComponentHookRegistry::Livewire\{closure}()

26 /var/www/hrms/vendor/livewire/livewire/src/EventBus.php(60): Livewire\ComponentHookRegistry::Livewire\{closure}()

27 /var/www/hrms/vendor/livewire/livewire/src/helpers.php(98): Livewire\EventBus->trigger()

28 /var/www/hrms/vendor/livewire/livewire/src/Mechanisms/HandleComponents/HandleComponents.php(447): Livewire\trigger()

29 /var/www/hrms/vendor/livewire/livewire/src/Mechanisms/HandleComponents/HandleComponents.php(100): Livewire\Mechanisms\HandleComponents\HandleComponents->callMethods()

30 /var/www/hrms/vendor/livewire/livewire/src/LivewireManager.php(97): Livewire\Mechanisms\HandleComponents\HandleComponents->update()

31 /var/www/hrms/vendor/livewire/livewire/src/Mechanisms/HandleRequests/HandleRequests.php(89): Livewire\LivewireManager->update()

32 /var/www/hrms/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(46): Livewire\Mechanisms\HandleRequests\HandleRequests->handleUpdate()

33 /var/www/hrms/vendor/laravel/framework/src/Illuminate/Routing/Route.php(260): Illuminate\Routing\ControllerDispatcher->dispatch()

34 /var/www/hrms/vendor/laravel/framework/src/Illuminate/Routing/Route.php(206): Illuminate\Routing\Route->runController()

35 /var/www/hrms/vendor/laravel/framework/src/Illuminate/Routing/Router.php(806): Illuminate\Routing\Route->run()

36 /var/www/hrms/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(144): Illuminate\Routing\Router->Illuminate\Routing\{closure}()

37 /var/www/hrms/app/Http/Middleware/UserOnlineMiddleware.php(26): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()

38 /var/www/hrms/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): App\Http\Middleware\UserOnlineMiddleware->handle()

39 /var/www/hrms/app/Http/Middleware/Localization.php(24): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()

40 /var/www/hrms/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): App\Http\Middleware\Localization->handle()

41 /var/www/hrms/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php(50): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()

42 /var/www/hrms/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): Illuminate\Routing\Middleware\SubstituteBindings->handle()

43 /var/www/hrms/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php(88): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()

44 /var/www/hrms/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): Illuminate\Foundation\Http\Middleware\VerifyCsrfToken->handle()

45 /var/www/hrms/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php(49): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()

46 /var/www/hrms/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): Illuminate\View\Middleware\ShareErrorsFromSession->handle()

47 /var/www/hrms/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(121): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()

48 /var/www/hrms/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(64): Illuminate\Session\Middleware\StartSession->handleStatefulRequest()

49 /var/www/hrms/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): Illuminate\Session\Middleware\StartSession->handle()

50 /var/www/hrms/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php(37): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()

51 /var/www/hrms/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse->handle()

52 /var/www/hrms/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php(75): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()

53 /var/www/hrms/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): Illuminate\Cookie\Middleware\EncryptCookies->handle()

54 /var/www/hrms/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(119): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()

55 /var/www/hrms/vendor/laravel/framework/src/Illuminate/Routing/Router.php(805): Illuminate\Pipeline\Pipeline->then()

56 /var/www/hrms/vendor/laravel/framework/src/Illuminate/Routing/Router.php(784): Illuminate\Routing\Router->runRouteWithinStack()

57 /var/www/hrms/vendor/laravel/framework/src/Illuminate/Routing/Router.php(748): Illuminate\Routing\Router->runRoute()

58 /var/www/hrms/vendor/laravel/framework/src/Illuminate/Routing/Router.php(737): Illuminate\Routing\Router->dispatchToRoute()

59 /var/www/hrms/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(200): Illuminate\Routing\Router->dispatch()

60 /var/www/hrms/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(144): Illuminate\Foundation\Http\Kernel->Illuminate\Foundation\Http\{closure}()

61 /var/www/hrms/vendor/livewire/livewire/src/Features/SupportDisablingBackButtonCache/DisableBackButtonCacheMiddleware.php(19): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()

62 /var/www/hrms/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): Livewire\Features\SupportDisablingBackButtonCache\DisableBackButtonCacheMiddleware->handle()

63 /var/www/hrms/vendor/barryvdh/laravel-debugbar/src/Middleware/InjectDebugbar.php(59): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()

64 /var/www/hrms/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): Barryvdh\Debugbar\Middleware\InjectDebugbar->handle()

65 /var/www/hrms/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php(27): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()

66 /var/www/hrms/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull->handle()

67 /var/www/hrms/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php(47): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()

68 /var/www/hrms/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): Illuminate\Foundation\Http\Middleware\TrimStrings->handle()

69 /var/www/hrms/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePostSize.php(27): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()

70 /var/www/hrms/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): Illuminate\Http\Middleware\ValidatePostSize->handle()

71 /var/www/hrms/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php(110): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()

72 /var/www/hrms/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): Illuminate\Foundation\Http\Middleware\PreventRequestsDuringMaintenance->handle()

73 /var/www/hrms/vendor/laravel/framework/src/Illuminate/Http/Middleware/HandleCors.php(49): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()

74 /var/www/hrms/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): Illuminate\Http\Middleware\HandleCors->handle()

75 /var/www/hrms/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php(57): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()

76 /var/www/hrms/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): Illuminate\Http\Middleware\TrustProxies->handle()

77 /var/www/hrms/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(119): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()

78 /var/www/hrms/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(175): Illuminate\Pipeline\Pipeline->then()

79 /var/www/hrms/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(144): Illuminate\Foundation\Http\Kernel->sendRequestThroughRouter()

80 /var/www/hrms/public/index.php(50): Illuminate\Foundation\Http\Kernel->handle()

81 {main}

"}

joedixon commented 2 months ago

I'm pretty sure that page is coming from Cloudflare. Looks like you need to update your Cloudflare to allow the request.

amit772000 commented 1 week ago

is this resolved i am getting same issue ?

purnada commented 1 week ago

Yes it is the issue of cloudflare.. if we will bypass the cloudflare it will work..