This commit is contained in:
freek 2018-11-26 22:29:24 +01:00
parent 58056b7e98
commit 23afe9ad40
4 changed files with 65 additions and 4 deletions

View File

@ -3,9 +3,11 @@
namespace BeyondCode\LaravelWebSockets\Dashboard;
use BeyondCode\LaravelWebSockets\Events\ApiMessageSent;
use BeyondCode\LaravelWebSockets\Events\ChannelOccupied;
use BeyondCode\LaravelWebSockets\Events\ChannelVacated;
use BeyondCode\LaravelWebSockets\Events\ClientMessageSent;
use BeyondCode\LaravelWebSockets\Events\ConnectionEstablished;
use BeyondCode\LaravelWebSockets\Events\SubscribedToChannel;
use BeyondCode\LaravelWebSockets\LaravelEcho\Pusher\Dashboard;
use Illuminate\Events\Dispatcher;
@ -21,6 +23,11 @@ class EventSubscriber
);
}
public function onChannelOccupied(ChannelOccupied $event)
{
Dashboard::occupied($event->connection, $event->channelId);
}
public function onChannelVacated(ChannelVacated $event)
{
Dashboard::vacated($event->connection, $event->channelId);
@ -36,10 +43,18 @@ class EventSubscriber
Dashboard::connection($event->connection);
}
public function onSubscribedToChannel(SubscribedToChannel $event)
{
Dashboard::subscribed($event->connection, $event->channelId);
}
public function subscribe(Dispatcher $events)
{
$events->listen(ApiMessageSent::class, static::class. '@onApiMessageSent');
$events->listen(ChannelOccupied::class, static::class . '@onChannelOccupied');
$events->listen(ChannelVacated::class, static::class . '@onChannelVacated');
$events->listen(ClientMessageSent::class, static::class . '@onClientMessageSent');
$events->listen(ConnectionEstablished::class, static::class . '@onConnectionEstablished');
$events->listen(SubscribedToChannel::class, static::class . '@onSubscribedToChannel');
}
}

View File

@ -0,0 +1,21 @@
<?php
namespace BeyondCode\LaravelWebSockets\Events;
use Ratchet\ConnectionInterface;
class ChannelOccupied
{
/** @var \Ratchet\ConnectionInterface */
public $connection;
/** @var string */
public $channelId;
public function __construct(ConnectionInterface $connection, string $channelId)
{
$this->connection = $connection;
$this->channelId = $channelId;
}
}

View File

@ -0,0 +1,21 @@
<?php
namespace BeyondCode\LaravelWebSockets\Events;
use Ratchet\ConnectionInterface;
class SubscribedToChannel
{
/** @var \Ratchet\ConnectionInterface */
public $connection;
/** @var string */
public $channelId;
public function __construct(ConnectionInterface $connection, string $channelId)
{
$this->connection = $connection;
$this->channelId = $channelId;
}
}

View File

@ -2,7 +2,9 @@
namespace BeyondCode\LaravelWebSockets\LaravelEcho\Pusher\Channels;
use BeyondCode\LaravelWebSockets\Events\ChannelOccupied;
use BeyondCode\LaravelWebSockets\Events\ChannelVacated;
use BeyondCode\LaravelWebSockets\Events\SubscribedToChannel;
use BeyondCode\LaravelWebSockets\LaravelEcho\Pusher\Dashboard;
use BeyondCode\LaravelWebSockets\LaravelEcho\Pusher\Exceptions\InvalidSignatureException;
use Illuminate\Support\Collection;
@ -66,13 +68,15 @@ class Channel
protected function saveConnection(ConnectionInterface $connection)
{
if (! $this->hasConnections()) {
Dashboard::occupied($connection, $this->channelId);
}
$hadConnectionsPreviously = $this->hasConnections();
$this->subscriptions[$connection->socketId] = $connection;
Dashboard::subscribed($connection, $this->channelId);
if (! $hadConnectionsPreviously) {
event(new ChannelOccupied($connection, $this->channelId));
}
event(new SubscribedToChannel($connection, $this->channelId));
}
public function broadcast($payload)