wip
This commit is contained in:
parent
84b8895ff8
commit
cdf229bfa1
|
|
@ -138,6 +138,8 @@
|
|||
});
|
||||
|
||||
this.subscribeToAllChannels();
|
||||
|
||||
this.subscribeToStatistics();
|
||||
},
|
||||
|
||||
disconnect() {
|
||||
|
|
@ -178,6 +180,16 @@
|
|||
});
|
||||
},
|
||||
|
||||
subscribeToStatistics() {
|
||||
this.pusher.subscribe('{{ \BeyondCode\LaravelWebSockets\Dashboard\DashboardLogger::LOG_CHANNEL_PREFIX }}statistics')
|
||||
.bind('statistics-updated', (data) => {
|
||||
this.chart.push([{
|
||||
time: data.time,
|
||||
y: data.peak_connection_count
|
||||
}]);
|
||||
});
|
||||
},
|
||||
|
||||
getBadgeClass(log) {
|
||||
if (log.type === 'occupied' || log.type === 'connection') {
|
||||
return 'badge-primary';
|
||||
|
|
|
|||
|
|
@ -58,7 +58,7 @@ class StartWebSocketServer extends Command
|
|||
return new HttpStatisticsLogger(app(ChannelManager::class), $browser);
|
||||
});
|
||||
|
||||
$this->loop->addPeriodicTimer(60, function() {
|
||||
$this->loop->addPeriodicTimer(5, function() {
|
||||
StatisticsLogger::save();
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,41 @@
|
|||
<?php
|
||||
|
||||
namespace BeyondCode\LaravelWebsockets\Statistics\Events;
|
||||
|
||||
use BeyondCode\LaravelWebSockets\Dashboard\DashboardLogger;
|
||||
use Illuminate\Broadcasting\PrivateChannel;
|
||||
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
|
||||
use Illuminate\Queue\SerializesModels;
|
||||
|
||||
class StatisticsUpdated implements ShouldBroadcast
|
||||
{
|
||||
use SerializesModels;
|
||||
|
||||
protected $statisticModel;
|
||||
|
||||
public function __construct($statisticModel)
|
||||
{
|
||||
$this->statisticModel = $statisticModel;
|
||||
}
|
||||
|
||||
public function broadcastWith()
|
||||
{
|
||||
return [
|
||||
'time' => $this->statisticModel->created_at->timestamp,
|
||||
'app_id' => $this->statisticModel->appId,
|
||||
'peak_connection_count' => $this->statisticModel->peakConnectionCount,
|
||||
'websocket_message_count' => $this->statisticModel->webSocketMessageCount,
|
||||
'api_message_count' => $this->statisticModel->apiMessageCount,
|
||||
];
|
||||
}
|
||||
|
||||
public function broadcastOn()
|
||||
{
|
||||
return new PrivateChannel(str_after(DashboardLogger::LOG_CHANNEL_PREFIX . 'statistics', 'private-'));
|
||||
}
|
||||
|
||||
public function broadcastAs()
|
||||
{
|
||||
return 'statistics-updated';
|
||||
}
|
||||
}
|
||||
|
|
@ -2,10 +2,11 @@
|
|||
|
||||
namespace BeyondCode\LaravelWebSockets\Statistics\Http\Controllers;
|
||||
|
||||
use BeyondCode\LaravelWebSockets\Statistics\Events\StatisticsUpdated;
|
||||
use BeyondCode\LaravelWebSockets\Statistics\Rules\AppId;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class WebsocketStatisticsEntriesController
|
||||
class WebSocketStatisticsEntriesController
|
||||
{
|
||||
public function store(Request $request)
|
||||
{
|
||||
|
|
@ -18,7 +19,9 @@ class WebsocketStatisticsEntriesController
|
|||
|
||||
$webSocketsStatisticsEntryModelClass = config('websockets.statistics_model');
|
||||
|
||||
$webSocketsStatisticsEntryModelClass::create($validatedAttributes);
|
||||
$statisticModel = $webSocketsStatisticsEntryModelClass::create($validatedAttributes);
|
||||
|
||||
broadcast(new StatisticsUpdated($statisticModel));
|
||||
|
||||
return 'ok';
|
||||
}
|
||||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
namespace BeyondCode\LaravelWebSockets\Statistics\Logger;
|
||||
|
||||
use BeyondCode\LaravelWebSockets\Statistics\Http\Controllers\WebsocketStatisticsEntriesController;
|
||||
use BeyondCode\LaravelWebSockets\Statistics\Http\Controllers\WebSocketStatisticsEntriesController;
|
||||
use BeyondCode\LaravelWebSockets\WebSockets\Channels\ChannelManager;
|
||||
use GuzzleHttp\Client;
|
||||
use Ratchet\ConnectionInterface;
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
namespace BeyondCode\LaravelWebSockets\Statistics\Logger;
|
||||
|
||||
use BeyondCode\LaravelWebSockets\Statistics\Http\Controllers\WebsocketStatisticsEntriesController;
|
||||
use BeyondCode\LaravelWebSockets\Statistics\Http\Controllers\WebSocketStatisticsEntriesController;
|
||||
use BeyondCode\LaravelWebSockets\Statistics\Statistic;
|
||||
use BeyondCode\LaravelWebSockets\WebSockets\Channels\ChannelManager;
|
||||
use Clue\React\Buzz\Browser;
|
||||
|
|
@ -72,7 +72,7 @@ class HttpStatisticsLogger implements StatisticsLogger
|
|||
|
||||
$this->browser
|
||||
->post(
|
||||
action([WebsocketStatisticsEntriesController::class, 'store']),
|
||||
action([WebSocketStatisticsEntriesController::class, 'store']),
|
||||
['Content-Type' => 'application/json'],
|
||||
stream_for(json_encode($statistic->toArray()))
|
||||
);
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ use BeyondCode\LaravelWebSockets\Dashboard\Http\Controllers\SendMessage;
|
|||
use BeyondCode\LaravelWebSockets\Dashboard\Http\Controllers\ShowDashboard;
|
||||
use BeyondCode\LaravelWebSockets\Dashboard\Http\Middleware\Authorize;
|
||||
use BeyondCode\LaravelWebSockets\Server\Router;
|
||||
use BeyondCode\LaravelWebSockets\Statistics\Http\Controllers\WebsocketStatisticsEntriesController;
|
||||
use BeyondCode\LaravelWebSockets\Statistics\Http\Controllers\WebSocketStatisticsEntriesController;
|
||||
use BeyondCode\LaravelWebSockets\Statistics\Logger\HttpStatisticsLogger;
|
||||
use Illuminate\Support\Facades\Gate;
|
||||
use Illuminate\Support\Facades\Route;
|
||||
|
|
@ -76,7 +76,7 @@ class WebSocketsServiceProvider extends ServiceProvider
|
|||
protected function registerStatisticRoute()
|
||||
{
|
||||
Route::prefix('/laravel-websockets')->namespace('\\')->group(function() {
|
||||
Route::post('statistics', [WebsocketStatisticsEntriesController::class, 'store']);
|
||||
Route::post('statistics', [WebSocketStatisticsEntriesController::class, 'store']);
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
namespace BeyondCode\LaravelWebSockets\Tests\Statistics\Controllers;
|
||||
|
||||
use BeyondCode\LaravelWebSockets\Statistics\Http\Controllers\WebsocketStatisticsEntriesController;
|
||||
use BeyondCode\LaravelWebSockets\Statistics\Http\Controllers\WebSocketStatisticsEntriesController;
|
||||
use BeyondCode\LaravelWebSockets\Statistics\Models\WebSocketsStatisticsEntry;
|
||||
use BeyondCode\LaravelWebSockets\Tests\TestCase;
|
||||
|
||||
|
|
@ -12,7 +12,7 @@ class WebSocketsStatisticsControllerTest extends TestCase
|
|||
public function it_can_store_statistics()
|
||||
{
|
||||
$this->post(
|
||||
action([WebsocketStatisticsEntriesController::class, 'store']),
|
||||
action([WebSocketStatisticsEntriesController::class, 'store']),
|
||||
$this->payload()
|
||||
);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue