From c23f011f716723ca73325b24238a4e0b93500061 Mon Sep 17 00:00:00 2001 From: freek Date: Tue, 27 Nov 2018 20:14:43 +0100 Subject: [PATCH 1/7] nitpick --- src/Server/Router.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Server/Router.php b/src/Server/Router.php index 66c6f26..9efa576 100644 --- a/src/Server/Router.php +++ b/src/Server/Router.php @@ -16,7 +16,7 @@ use BeyondCode\LaravelWebSockets\Exceptions\InvalidWebSocketController; class Router { - /** @var RouteCollection */ + /** @var \Symfony\Component\Routing\RouteCollection */ protected $routes; public function __construct() @@ -81,6 +81,7 @@ class Router /** * @param $action + * * @return WsServer|HttpServerInterface */ protected function wrapAction($action) From 1691fa79620e623abc4b82cb14a90974ef7bf1a6 Mon Sep 17 00:00:00 2001 From: freek Date: Tue, 27 Nov 2018 20:20:17 +0100 Subject: [PATCH 2/7] nitpick --- src/Server/Router.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Server/Router.php b/src/Server/Router.php index 9efa576..40b9f0f 100644 --- a/src/Server/Router.php +++ b/src/Server/Router.php @@ -82,7 +82,7 @@ class Router /** * @param $action * - * @return WsServer|HttpServerInterface + * @return \Ratchet\WebSocket\WsServer|\Ratchet\Http\HttpServerInterface */ protected function wrapAction($action) { From fe811549a20846d3f92e4ec331b2ca74d442a0b8 Mon Sep 17 00:00:00 2001 From: freek Date: Tue, 27 Nov 2018 21:14:08 +0100 Subject: [PATCH 3/7] commit --- config/websockets.php | 4 ++-- src/Server/OriginCheck.php | 1 - src/Server/Router.php | 27 ++++++++++++++++----------- 3 files changed, 18 insertions(+), 14 deletions(-) diff --git a/config/websockets.php b/config/websockets.php index 67efc05..ce79f2c 100644 --- a/config/websockets.php +++ b/config/websockets.php @@ -37,9 +37,9 @@ return [ ], /* - * The maximum request size that is allowed for an incoming websocket request. + * The maximum request size in bytes that is allowed for an incoming websocket request. */ - 'maxRequestSize' => 256000, + 'maxRequestSize' => 1024 * 250, /* * Define the optional SSL context for your websocket connections. diff --git a/src/Server/OriginCheck.php b/src/Server/OriginCheck.php index 689ef07..883efb7 100644 --- a/src/Server/OriginCheck.php +++ b/src/Server/OriginCheck.php @@ -10,7 +10,6 @@ use Psr\Http\Message\RequestInterface; class OriginCheck implements HttpServerInterface { - use CloseResponseTrait; /** @var \Ratchet\MessageComponentInterface */ diff --git a/src/Server/Router.php b/src/Server/Router.php index 800c8a5..64d4a52 100644 --- a/src/Server/Router.php +++ b/src/Server/Router.php @@ -25,6 +25,11 @@ class Router $this->routes = new RouteCollection; } + public function getRoutes(): RouteCollection + { + return $this->routes; + } + public function websocket(string $uri, $action) { if (!is_subclass_of($action, MessageComponentInterface::class)) { @@ -81,27 +86,27 @@ class Router } /** - * @param $action + * @param string $action * * @return \Ratchet\WebSocket\WsServer|\Ratchet\Http\HttpServerInterface */ - protected function wrapAction($action) + protected function wrapAction(string $action) { if (is_subclass_of($action, MessageComponentInterface::class)) { - $app = app($action); - - if (MessageLogger::isEnabled()) { - $app = MessageLogger::decorate($app); - } - - return new WsServer($app); + return $this->createWebSocketsServer($action); } return app($action); } - public function getRoutes(): RouteCollection + protected function createWebSocketsServer(MessageComponentInterface $action): WsServer { - return $this->routes; + $app = app($action); + + if (MessageLogger::isEnabled()) { + $app = MessageLogger::decorate($app); + } + + return new WsServer($app); } } \ No newline at end of file From 2eb3a01169dc4e82f02984cb047a5ece4584940f Mon Sep 17 00:00:00 2001 From: freek Date: Tue, 27 Nov 2018 21:15:29 +0100 Subject: [PATCH 4/7] add controller prefixes --- ...tchChannel.php => FetchChannelController.php} | 2 +- ...hChannels.php => FetchChannelsController.php} | 2 +- .../{FetchUsers.php => FetchUsersController.php} | 2 +- ...iggerEvent.php => TriggerEventController.php} | 2 +- src/Server/Router.php | 16 ++++++++-------- 5 files changed, 12 insertions(+), 12 deletions(-) rename src/HttpApi/Controllers/{FetchChannel.php => FetchChannelController.php} (91%) rename src/HttpApi/Controllers/{FetchChannels.php => FetchChannelsController.php} (95%) rename src/HttpApi/Controllers/{FetchUsers.php => FetchUsersController.php} (95%) rename src/HttpApi/Controllers/{TriggerEvent.php => TriggerEventController.php} (95%) diff --git a/src/HttpApi/Controllers/FetchChannel.php b/src/HttpApi/Controllers/FetchChannelController.php similarity index 91% rename from src/HttpApi/Controllers/FetchChannel.php rename to src/HttpApi/Controllers/FetchChannelController.php index 2cb44e3..af7a96e 100644 --- a/src/HttpApi/Controllers/FetchChannel.php +++ b/src/HttpApi/Controllers/FetchChannelController.php @@ -6,7 +6,7 @@ use BeyondCode\LaravelWebSockets\HttpApi\Controllers\Controller; use Illuminate\Http\Request; use Symfony\Component\HttpKernel\Exception\HttpException; -class FetchChannel extends Controller +class FetchChannelController extends Controller { public function __invoke(Request $request) { diff --git a/src/HttpApi/Controllers/FetchChannels.php b/src/HttpApi/Controllers/FetchChannelsController.php similarity index 95% rename from src/HttpApi/Controllers/FetchChannels.php rename to src/HttpApi/Controllers/FetchChannelsController.php index 6b0960d..26564d6 100644 --- a/src/HttpApi/Controllers/FetchChannels.php +++ b/src/HttpApi/Controllers/FetchChannelsController.php @@ -7,7 +7,7 @@ use Illuminate\Http\Request; use Illuminate\Support\Collection; use BeyondCode\LaravelWebSockets\WebSockets\Channels\PresenceChannel; -class FetchChannels extends Controller +class FetchChannelsController extends Controller { public function __invoke(Request $request) { diff --git a/src/HttpApi/Controllers/FetchUsers.php b/src/HttpApi/Controllers/FetchUsersController.php similarity index 95% rename from src/HttpApi/Controllers/FetchUsers.php rename to src/HttpApi/Controllers/FetchUsersController.php index a6f4930..9b3551d 100644 --- a/src/HttpApi/Controllers/FetchUsers.php +++ b/src/HttpApi/Controllers/FetchUsersController.php @@ -8,7 +8,7 @@ use Illuminate\Support\Collection; use Symfony\Component\HttpKernel\Exception\HttpException; use BeyondCode\LaravelWebSockets\WebSockets\Channels\PresenceChannel; -class FetchUsers extends Controller +class FetchUsersController extends Controller { public function __invoke(Request $request) { diff --git a/src/HttpApi/Controllers/TriggerEvent.php b/src/HttpApi/Controllers/TriggerEventController.php similarity index 95% rename from src/HttpApi/Controllers/TriggerEvent.php rename to src/HttpApi/Controllers/TriggerEventController.php index 78684f3..fa3b19d 100644 --- a/src/HttpApi/Controllers/TriggerEvent.php +++ b/src/HttpApi/Controllers/TriggerEventController.php @@ -6,7 +6,7 @@ use BeyondCode\LaravelWebSockets\Events\ApiMessageSent; use BeyondCode\LaravelWebSockets\HttpApi\Controllers\Controller; use Illuminate\Http\Request; -class TriggerEvent extends Controller +class TriggerEventController extends Controller { public function __invoke(Request $request) { diff --git a/src/Server/Router.php b/src/Server/Router.php index 64d4a52..0016358 100644 --- a/src/Server/Router.php +++ b/src/Server/Router.php @@ -3,10 +3,10 @@ namespace BeyondCode\LaravelWebSockets\Server; use BeyondCode\LaravelWebSockets\Server\Logger\MessageLogger; -use BeyondCode\LaravelWebSockets\HttpApi\Controllers\FetchChannel; -use BeyondCode\LaravelWebSockets\HttpApi\Controllers\FetchChannels; -use BeyondCode\LaravelWebSockets\HttpApi\Controllers\FetchUsers; -use BeyondCode\LaravelWebSockets\HttpApi\Controllers\TriggerEvent; +use BeyondCode\LaravelWebSockets\HttpApi\Controllers\FetchChannelController; +use BeyondCode\LaravelWebSockets\HttpApi\Controllers\FetchChannelsController; +use BeyondCode\LaravelWebSockets\HttpApi\Controllers\FetchUsersController; +use BeyondCode\LaravelWebSockets\HttpApi\Controllers\TriggerEventController; use BeyondCode\LaravelWebSockets\WebSockets\Controllers\WebSocketHandler; use Ratchet\WebSocket\MessageComponentInterface; use Ratchet\WebSocket\WsServer; @@ -78,11 +78,11 @@ class Router { $this->get('/app/{appKey}', WebSocketHandler::class); - $this->get('/apps/{appId}/channels', FetchChannels::class); - $this->get('/apps/{appId}/channels/{channelName}', FetchChannel::class); - $this->get('/apps/{appId}/channels/{channelName}/users', FetchUsers::class); + $this->get('/apps/{appId}/channels', FetchChannelsController::class); + $this->get('/apps/{appId}/channels/{channelName}', FetchChannelController::class); + $this->get('/apps/{appId}/channels/{channelName}/users', FetchUsersController::class); - $this->post('/apps/{appId}/events', TriggerEvent::class); + $this->post('/apps/{appId}/events', TriggerEventController::class); } /** From b8de9061fbf10fb4af7bbc5c4f7f279b2392b3c4 Mon Sep 17 00:00:00 2001 From: freek Date: Tue, 27 Nov 2018 21:17:35 +0100 Subject: [PATCH 5/7] reorder --- src/Server/Router.php | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/src/Server/Router.php b/src/Server/Router.php index 0016358..42e7d28 100644 --- a/src/Server/Router.php +++ b/src/Server/Router.php @@ -30,15 +30,18 @@ class Router return $this->routes; } - public function websocket(string $uri, $action) + public function echo() { - if (!is_subclass_of($action, MessageComponentInterface::class)) { - throw InvalidWebSocketController::withController($action); - } + $this->get('/app/{appKey}', WebSocketHandler::class); - $this->get($uri, $action); + $this->get('/apps/{appId}/channels', FetchChannelsController::class); + $this->get('/apps/{appId}/channels/{channelName}', FetchChannelController::class); + $this->get('/apps/{appId}/channels/{channelName}/users', FetchUsersController::class); + $this->post('/apps/{appId}/events', TriggerEventController::class); } + + public function get(string $uri, $action) { $this->addRoute('GET', $uri, $action); @@ -64,6 +67,15 @@ class Router $this->addRoute('DELETE', $uri, $action); } + public function websocket(string $uri, $action) + { + if (!is_subclass_of($action, MessageComponentInterface::class)) { + throw InvalidWebSocketController::withController($action); + } + + $this->get($uri, $action); + } + public function addRoute(string $method, string $uri, $action) { $this->routes->add($uri, $this->getRoute($method, $uri, $action)); @@ -74,16 +86,7 @@ class Router return new Route($uri, ['_controller' => $this->wrapAction($action)], [], [], null, [], [$method]); } - public function echo() - { - $this->get('/app/{appKey}', WebSocketHandler::class); - $this->get('/apps/{appId}/channels', FetchChannelsController::class); - $this->get('/apps/{appId}/channels/{channelName}', FetchChannelController::class); - $this->get('/apps/{appId}/channels/{channelName}/users', FetchUsersController::class); - - $this->post('/apps/{appId}/events', TriggerEventController::class); - } /** * @param string $action From 9f2221715e2469c19b2feee9f45a5c35cea3ed1b Mon Sep 17 00:00:00 2001 From: freek Date: Tue, 27 Nov 2018 21:23:48 +0100 Subject: [PATCH 6/7] commit --- src/Server/Router.php | 26 ++++++++++---------------- 1 file changed, 10 insertions(+), 16 deletions(-) diff --git a/src/Server/Router.php b/src/Server/Router.php index 42e7d28..6b4dbdb 100644 --- a/src/Server/Router.php +++ b/src/Server/Router.php @@ -83,23 +83,17 @@ class Router protected function getRoute(string $method, string $uri, $action): Route { - return new Route($uri, ['_controller' => $this->wrapAction($action)], [], [], null, [], [$method]); - } + /** + * If the given action is a class that handles WebSockets, then it's not a regular + * controller but a WebSocketHandler that needs to converted to a WsServer. + * + * If the given action is a regular controller we'll just instanciate it. + */ + $action = is_subclass_of($action, MessageComponentInterface::class) + ? $this->createWebSocketsServer($action) + : app($action); - - - /** - * @param string $action - * - * @return \Ratchet\WebSocket\WsServer|\Ratchet\Http\HttpServerInterface - */ - protected function wrapAction(string $action) - { - if (is_subclass_of($action, MessageComponentInterface::class)) { - return $this->createWebSocketsServer($action); - } - - return app($action); + return new Route($uri, ['_controller' => $action], [], [], null, [], [$method]); } protected function createWebSocketsServer(MessageComponentInterface $action): WsServer From db45947b483c04f5f7f17b06a0ef8f84820eee79 Mon Sep 17 00:00:00 2001 From: freek Date: Tue, 27 Nov 2018 21:28:14 +0100 Subject: [PATCH 7/7] commit --- src/Server/Router.php | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/Server/Router.php b/src/Server/Router.php index 6b4dbdb..334e023 100644 --- a/src/Server/Router.php +++ b/src/Server/Router.php @@ -11,7 +11,6 @@ use BeyondCode\LaravelWebSockets\WebSockets\Controllers\WebSocketHandler; use Ratchet\WebSocket\MessageComponentInterface; use Ratchet\WebSocket\WsServer; use Symfony\Component\Routing\Route; -use Ratchet\Http\HttpServerInterface; use Symfony\Component\Routing\RouteCollection; use BeyondCode\LaravelWebSockets\Exceptions\InvalidWebSocketController; @@ -40,8 +39,6 @@ class Router $this->post('/apps/{appId}/events', TriggerEventController::class); } - - public function get(string $uri, $action) { $this->addRoute('GET', $uri, $action);