GraphQL subscription with Laravel Reverb
When a subscription request is received by Reverb, it throws the following error:
TypeError Laravel\Reverb\Protocols\Pusher\EventHandler::subscribe(): Argument #4 ($data) must be of type ?string, array given, called in /var/www/DemoGraphQL/vendor/laravel/reverb/src/Protocols/Pusher/EventHandler.php on line 29 at vendor/laravel/reverb/src/Protocols/Pusher/EventHandler.php:56
The error is caused by the payload data being an array instead of a string, which is expected by the subscribe method in the EventHandler class.
The payload that triggers the error looks like this:
[
"channel_data" => [
"user_id" => "363c7a56eee7c386bf2c4ac980b661e6"
"user_info" => []
]
"channel" => "private-lighthouse-vEibwD5lS5FA0xmHHrMuH3Z5A8nVSvbC-1717741629"
]
The authorizedMethod in the EchoBroadcaster Class should send an string for 'channel_data' instead an array.
Steps to reproduce
- Starting laravel reverb
- Add an Subscription to the Frontend
Output/Logs
Laravel Exception
TypeError
Laravel\Reverb\Protocols\Pusher\EventHandler::subscribe(): Argument #4 ($data) must be of type ?string, array given, called in /Users/dev/Herd/lv-ep-gw-api/vendor/laravel/reverb/src/Protocols/Pusher/EventHandler.php on line 29
at vendor/laravel/reverb/src/Protocols/Pusher/EventHandler.php:56
52▕
53▕ /**
54▕ * Subscribe to the given channel.
55▕ */
➜ 56▕ public function subscribe(Connection $connection, string $channel, ?string $auth = null, ?string $data = null): void
57▕ {
58▕ $channel = $this->channels
59▕ ->for($connection->app())
60▕ ->findOrCreate($channel);
Lighthouse Version
6.36.3
Could it be the case that previous versions of Laravel Reverb required an array? How can we fix this without breaking backwards compatibility?
I don't know if older versions required an array. Maybe you can add a new Driver for laravel reverb, that can be set like this: LIGHTHOUSE_BROADCASTER=reverb in the config.
I personally do not use subscriptions, so I do not plan to work on this. Feel free to contribute.
I faced the same issue and fixed it by reusing the pusher driver for the reverb connection. #2612
Released with https://github.com/nuwave/lighthouse/releases/tag/v6.47.0.