Merge branch 'master' of github.com:beyondcode/laravel-websockets

This commit is contained in:
freek 2018-12-03 13:33:38 +01:00
commit 90b6998eaa
4 changed files with 32 additions and 3 deletions

View File

@ -2,6 +2,7 @@
namespace BeyondCode\LaravelWebSockets\Console; namespace BeyondCode\LaravelWebSockets\Console;
use BeyondCode\LaravelWebSockets\Facades\StatisticsLogger;
use BeyondCode\LaravelWebSockets\Facades\WebSocketsRouter; use BeyondCode\LaravelWebSockets\Facades\WebSocketsRouter;
use BeyondCode\LaravelWebSockets\Server\Logger\ConnectionLogger; use BeyondCode\LaravelWebSockets\Server\Logger\ConnectionLogger;
use BeyondCode\LaravelWebSockets\Server\Logger\HttpLogger; use BeyondCode\LaravelWebSockets\Server\Logger\HttpLogger;
@ -17,9 +18,20 @@ class StartWebSocketServer extends Command
protected $description = 'Start the Laravel WebSocket Server'; protected $description = 'Start the Laravel WebSocket Server';
/** @var \React\EventLoop\LoopInterface */
protected $loop;
public function __construct()
{
parent::__construct();
$this->loop = LoopFactory::create();
}
public function handle() public function handle()
{ {
$this $this
->configureStatisticsLogger()
->configureHttpLogger() ->configureHttpLogger()
->configureMessageLogger() ->configureMessageLogger()
->configureConnectionLogger() ->configureConnectionLogger()
@ -60,6 +72,15 @@ class StartWebSocketServer extends Command
return $this; return $this;
} }
protected function configureStatisticsLogger()
{
$this->loop->addPeriodicTimer(60, function() {
StatisticsLogger::save();
});
return $this;
}
protected function registerEchoRoutes() protected function registerEchoRoutes()
{ {
WebSocketsRouter::echo(); WebSocketsRouter::echo();
@ -75,6 +96,7 @@ class StartWebSocketServer extends Command
/** 🛰 Start the server 🛰 */ /** 🛰 Start the server 🛰 */
(new WebSocketServerFactory()) (new WebSocketServerFactory())
->setLoop($this->loop)
->useRoutes($routes) ->useRoutes($routes)
->setHost($this->option('host')) ->setHost($this->option('host'))
->setPort($this->option('port')) ->setPort($this->option('port'))

View File

@ -3,6 +3,7 @@
namespace BeyondCode\LaravelWebSockets\HttpApi\Controllers; namespace BeyondCode\LaravelWebSockets\HttpApi\Controllers;
use BeyondCode\LaravelWebSockets\Dashboard\DashboardLogger; use BeyondCode\LaravelWebSockets\Dashboard\DashboardLogger;
use BeyondCode\LaravelWebSockets\Facades\StatisticsLogger;
use Illuminate\Http\Request; use Illuminate\Http\Request;
class TriggerEventController extends Controller class TriggerEventController extends Controller
@ -26,6 +27,8 @@ class TriggerEventController extends Controller
$request->json()->get('name'), $request->json()->get('name'),
$request->json()->get('data') $request->json()->get('data')
); );
StatisticsLogger::apiMessage($request->appId);
} }
return $request->json()->all(); return $request->json()->all();

View File

@ -26,11 +26,11 @@ class Logger
$this->statistics[$connection->app->id]->webSocketMessage(); $this->statistics[$connection->app->id]->webSocketMessage();
} }
public function apiMessage(ConnectionInterface $connection) public function apiMessage($appId)
{ {
$this->initializeStatistics($connection->app->id); $this->initializeStatistics($appId);
$this->statistics[$connection->app->id]->apiMessage(); $this->statistics[$appId]->apiMessage();
} }
public function connection(ConnectionInterface $connection) public function connection(ConnectionInterface $connection)

View File

@ -38,6 +38,8 @@ class WebSocketHandler implements MessageComponentInterface
$message = PusherMessageFactory::createForMessage($message, $connection, $this->channelManager); $message = PusherMessageFactory::createForMessage($message, $connection, $this->channelManager);
$message->respond(); $message->respond();
StatisticsLogger::webSocketMessage($connection);
} }
public function onClose(ConnectionInterface $connection) public function onClose(ConnectionInterface $connection)
@ -45,6 +47,8 @@ class WebSocketHandler implements MessageComponentInterface
$this->channelManager->removeFromAllChannels($connection); $this->channelManager->removeFromAllChannels($connection);
DashboardLogger::disconnection($connection); DashboardLogger::disconnection($connection);
StatisticsLogger::disconnection($connection);
} }
public function onError(ConnectionInterface $connection, Exception $exception) public function onError(ConnectionInterface $connection, Exception $exception)