Skip to content

Commit fcdd3a5

Browse files
authored
[9.x] Only throws BroadcastException on all drivers (#38862)
* Normalize Broadcasting Exceptions to all return BroadcastException * Import BroadcastException and fix typo
1 parent 818d736 commit fcdd3a5

File tree

3 files changed

+29
-6
lines changed

3 files changed

+29
-6
lines changed

src/Illuminate/Broadcasting/Broadcasters/AblyBroadcaster.php

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
namespace Illuminate\Broadcasting\Broadcasters;
44

55
use Ably\AblyRest;
6+
use Ably\Exceptions\AblyException;
7+
use Illuminate\Broadcasting\BroadcastException;
68
use Illuminate\Support\Str;
79
use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException;
810

@@ -117,11 +119,19 @@ public function generateAblySignature($channelName, $socketId, $userData = null)
117119
* @param string $event
118120
* @param array $payload
119121
* @return void
122+
*
123+
* @throws \Illuminate\Broadcasting\BroadcastException
120124
*/
121125
public function broadcast(array $channels, $event, array $payload = [])
122126
{
123-
foreach ($this->formatChannels($channels) as $channel) {
124-
$this->ably->channels->get($channel)->publish($event, $payload);
127+
try {
128+
foreach ($this->formatChannels($channels) as $channel) {
129+
$this->ably->channels->get($channel)->publish($event, $payload);
130+
}
131+
} catch (AblyException $e) {
132+
throw new BroadcastException(
133+
sprintf('Ably error: %s', $e->getMessage())
134+
);
125135
}
126136
}
127137

src/Illuminate/Broadcasting/Broadcasters/RedisBroadcaster.php

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,11 @@
22

33
namespace Illuminate\Broadcasting\Broadcasters;
44

5+
use Illuminate\Broadcasting\BroadcastException;
56
use Illuminate\Contracts\Redis\Factory as Redis;
67
use Illuminate\Support\Arr;
8+
use Predis\Connection\ConnectionException;
9+
use RedisException;
710
use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException;
811

912
class RedisBroadcaster extends Broadcaster
@@ -105,6 +108,8 @@ public function validAuthenticationResponse($request, $result)
105108
* @param string $event
106109
* @param array $payload
107110
* @return void
111+
*
112+
* @throws \Illuminate\Broadcasting\BroadcastException
108113
*/
109114
public function broadcast(array $channels, $event, array $payload = [])
110115
{
@@ -120,10 +125,16 @@ public function broadcast(array $channels, $event, array $payload = [])
120125
'socket' => Arr::pull($payload, 'socket'),
121126
]);
122127

123-
$connection->eval(
124-
$this->broadcastMultipleChannelsScript(),
125-
0, $payload, ...$this->formatChannels($channels)
126-
);
128+
try {
129+
$connection->eval(
130+
$this->broadcastMultipleChannelsScript(),
131+
0, $payload, ...$this->formatChannels($channels)
132+
);
133+
} catch (ConnectionException|RedisException $e) {
134+
throw new BroadcastException(
135+
sprintf('Redis error: %s.', $e->getMessage())
136+
);
137+
}
127138
}
128139

129140
/**

src/Illuminate/Contracts/Broadcasting/Broadcaster.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ public function validAuthenticationResponse($request, $result);
2828
* @param string $event
2929
* @param array $payload
3030
* @return void
31+
*
32+
* @throws \Illuminate\Broadcasting\BroadcastException
3133
*/
3234
public function broadcast(array $channels, $event, array $payload = []);
3335
}

0 commit comments

Comments
 (0)