add api message sent event

This commit is contained in:
freek 2018-11-26 22:11:47 +01:00
parent cc9fb7d7eb
commit 76b8105492
3 changed files with 45 additions and 8 deletions

View File

@ -2,6 +2,7 @@
namespace BeyondCode\LaravelWebSockets\Dashboard;
use BeyondCode\LaravelWebSockets\Events\ApiMessageSent;
use BeyondCode\LaravelWebSockets\Events\ChannelVacated;
use BeyondCode\LaravelWebSockets\Events\ClientMessageSent;
use BeyondCode\LaravelWebSockets\LaravelEcho\Pusher\Dashboard;
@ -9,6 +10,16 @@ use Illuminate\Events\Dispatcher;
class EventSubscriber
{
public function onApiMessageSent(ApiMessageSent $event)
{
Dashboard::apiMessage(
$event->appId,
$event->channeldId,
$event->name,
$event->data
);
}
public function onChannelVacated(ChannelVacated $event)
{
Dashboard::vacated($event->connection, $event->channelId);
@ -21,6 +32,7 @@ class EventSubscriber
public function subscribe(Dispatcher $events)
{
$events->listen(ApiMessageSent::class, static::class. '@onApiMessageSent');
$events->listen(ChannelVacated::class, static::class . '@onChannelVacated');
$events->listen(ClientMessageSent::class, static::class . '@onClientMessageSent');
}

View File

@ -0,0 +1,25 @@
<?php
namespace BeyondCode\LaravelWebSockets\Events;
use Ratchet\ConnectionInterface;
use stdClass;
class ApiMessageSent
{
public $appId;
public $channeldId;
public $name;
public $data;
public function __construct($appId, $channeldId, $name, $data)
{
$this->appId = $appId;
$this->channeldId = $channeldId;
$this->name = $name;
$this->data = $data;
}
}

View File

@ -2,7 +2,7 @@
namespace BeyondCode\LaravelWebSockets\LaravelEcho\Http\Controllers;
use BeyondCode\LaravelWebSockets\LaravelEcho\Pusher\Dashboard;
use BeyondCode\LaravelWebSockets\Events\ApiMessageSent;
use Illuminate\Http\Request;
class TriggerEvent extends EchoController
@ -12,13 +12,6 @@ class TriggerEvent extends EchoController
$this->ensureValidSignature($request);
foreach ($request->json()->get('channels', []) as $channelId) {
Dashboard::apiMessage(
$request->appId,
$channelId,
$request->json()->get('name'),
$request->json()->get('data')
);
$channel = $this->channelManager->find($request->appId, $channelId);
optional($channel)->broadcastToEveryoneExcept([
@ -26,6 +19,13 @@ class TriggerEvent extends EchoController
'event' => $request->json()->get('name'),
'data' => $request->json()->get('data'),
], $request->json()->get('socket_id'));
event(new ApiMessageSent(
$request->appId,
$channelId,
$request->json()->get('name'),
$request->json()->get('data')
));
}
return $request->json()->all();