wip
This commit is contained in:
parent
ce9da0d0f0
commit
61fe3621be
|
|
@ -25,14 +25,15 @@
|
|||
"php": "^7.1",
|
||||
"ext-json": "*",
|
||||
"cboden/ratchet": "^0.4.1",
|
||||
"illuminate/broadcasting": "5.7.*",
|
||||
"illuminate/console": "5.7.*",
|
||||
"illuminate/http": "5.7.*",
|
||||
"illuminate/routing": "5.7.*",
|
||||
"illuminate/broadcasting": "5.7.*",
|
||||
"illuminate/support": "5.7.*",
|
||||
"symfony/http-kernel": "~4.0",
|
||||
"pusher/pusher-php-server": "~3.0",
|
||||
"symfony/psr-http-message-bridge": "^1.1"
|
||||
"symfony/http-kernel": "~4.0",
|
||||
"symfony/psr-http-message-bridge": "^1.1",
|
||||
"wyrihaximus/react-guzzle-psr7": "^2.1"
|
||||
},
|
||||
"require-dev": {
|
||||
"mockery/mockery": "^1.2",
|
||||
|
|
|
|||
|
|
@ -74,8 +74,18 @@ class StartWebSocketServer extends Command
|
|||
|
||||
protected function configureStatisticsLogger()
|
||||
{
|
||||
$handler = new \WyriHaximus\React\GuzzlePsr7\HttpClientAdapter($this->loop);
|
||||
|
||||
$client = new \GuzzleHttp\Client([
|
||||
'handler' => \GuzzleHttp\HandlerStack::create($handler),
|
||||
]);
|
||||
|
||||
app()->singleton('websockets.statisticslogger', function() use ($client) {
|
||||
return new StatisticsLogger(app(ChannelManager::class, $client));
|
||||
});
|
||||
|
||||
$this->loop->addPeriodicTimer(60, function() {
|
||||
StatisticsLogger::save();
|
||||
StatisticsLogger::save($this->loop);
|
||||
});
|
||||
|
||||
return $this;
|
||||
|
|
|
|||
|
|
@ -2,7 +2,9 @@
|
|||
|
||||
namespace BeyondCode\LaravelWebSockets\Statistics\Logging;
|
||||
|
||||
use BeyondCode\LaravelWebSockets\Statistics\Http\Controllers\WebsocketStatisticsEntriesController;
|
||||
use BeyondCode\LaravelWebSockets\WebSockets\Channels\ChannelManager;
|
||||
use GuzzleHttp\Client;
|
||||
use Illuminate\Support\Collection;
|
||||
use Ratchet\ConnectionInterface;
|
||||
|
||||
|
|
@ -14,9 +16,11 @@ class StatisticsLogger
|
|||
/** @var \BeyondCode\LaravelWebSockets\WebSockets\Channels\ChannelManager */
|
||||
protected $channelManager;
|
||||
|
||||
public function __construct(ChannelManager $channelManager)
|
||||
public function __construct(ChannelManager $channelManager, Client $client)
|
||||
{
|
||||
$this->channelManager = $channelManager;
|
||||
|
||||
$this->client = $client;
|
||||
}
|
||||
|
||||
public function webSocketMessage(ConnectionInterface $connection)
|
||||
|
|
@ -57,14 +61,20 @@ class StatisticsLogger
|
|||
public function save()
|
||||
{
|
||||
foreach ($this->statistics as $appId => $statistic) {
|
||||
if ($statistic->isEnabled()) {
|
||||
// TODO: perform http request
|
||||
if (! $statistic->isEnabled()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$this->client->postAsync(
|
||||
action([WebsocketStatisticsEntriesController::class, 'store']),
|
||||
$statistic->toArray()
|
||||
);
|
||||
|
||||
// Reset connection and message count
|
||||
$connections = Collection::make($this->channelManager->getChannels($appId))->sum(function ($channel) {
|
||||
return count($channel->getSubscribedConnections());
|
||||
});
|
||||
$connections = collect($this->channelManager->getChannels($appId))
|
||||
->sum(function ($channel) {
|
||||
return count($channel->getSubscribedConnections());
|
||||
});
|
||||
|
||||
$statistic->reset($connections);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -52,10 +52,6 @@ class WebSocketsServiceProvider extends ServiceProvider
|
|||
return new ChannelManager();
|
||||
});
|
||||
|
||||
$this->app->singleton('websockets.statisticslogger', function() {
|
||||
return new StatisticsLogger(app(ChannelManager::class));
|
||||
});
|
||||
|
||||
$this->app->singleton(AppProvider::class, function() {
|
||||
return app(config('websockets.app_provider'));
|
||||
});
|
||||
|
|
|
|||
Loading…
Reference in New Issue