From 15aa70d7c954cb92a38ce5024bae313b52c9cbf7 Mon Sep 17 00:00:00 2001 From: Marcel Pociot Date: Tue, 27 Nov 2018 21:06:04 +0100 Subject: [PATCH 1/2] wip --- src/Server/Router.php | 7 +- src/Server/WebSocketServer.php | 93 ------------------- ...herController.php => WebSocketHandler.php} | 8 +- tests/ConnectionTest.php | 6 +- 4 files changed, 11 insertions(+), 103 deletions(-) delete mode 100644 src/Server/WebSocketServer.php rename src/WebSockets/Controllers/{PusherController.php => WebSocketHandler.php} (91%) diff --git a/src/Server/Router.php b/src/Server/Router.php index 66c6f26..eef48f0 100644 --- a/src/Server/Router.php +++ b/src/Server/Router.php @@ -7,7 +7,8 @@ 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\WebSockets\Controllers\PusherController; +use BeyondCode\LaravelWebSockets\WebSockets\Controllers\WebSocketHandler; +use Ratchet\WebSocket\MessageComponentInterface; use Ratchet\WebSocket\WsServer; use Symfony\Component\Routing\Route; use Ratchet\Http\HttpServerInterface; @@ -70,7 +71,7 @@ class Router public function echo() { - $this->get('/app/{appKey}', PusherController::class); + $this->get('/app/{appKey}', WebSocketHandler::class); $this->get('/apps/{appId}/channels', FetchChannels::class); $this->get('/apps/{appId}/channels/{channelName}', FetchChannel::class); @@ -85,7 +86,7 @@ class Router */ protected function wrapAction($action) { - if (is_subclass_of($action, WebSocketController::class)) { + if (is_subclass_of($action, MessageComponentInterface::class)) { $app = app($action); if (MessageLogger::isEnabled()) { diff --git a/src/Server/WebSocketServer.php b/src/Server/WebSocketServer.php deleted file mode 100644 index 233efb1..0000000 --- a/src/Server/WebSocketServer.php +++ /dev/null @@ -1,93 +0,0 @@ -loop = LoopFactory::create(); - - $this->routes = $routes; - } - - public function setHost(string $host) - { - $this->host = $host; - - return $this; - } - - public function setPort(string $port) - { - $this->port = $port; - - return $this; - } - - public function setLoop(LoopInterface $loop) - { - $this->loop = $loop; - - return $this; - } - - public function setConsoleOutput(OutputInterface $consoleOutput) - { - $this->consoleOutput = $consoleOutput; - - return $this; - } - - public function run() - { - $server = $this->createServer(); - - $server->run(); - } - - protected function createServer(): IoServer - { - $socket = new Server("{$this->host}:{$this->port}", $this->loop); - - if (config('websockets.ssl.local_cert')) { - $socket = new SecureServer($socket, $this->loop, config('websockets.ssl')); - } - - $urlMatcher = new UrlMatcher($this->routes, new RequestContext); - - $router = new Router($urlMatcher); - - $app = new OriginCheck($router, config('websockets.allowedOrigins', [])); - - $httpServer = new HttpServer($app, config('websockets.maxRequestSize')); - - return new IoServer($httpServer, $socket, $this->loop); - } -} diff --git a/src/WebSockets/Controllers/PusherController.php b/src/WebSockets/Controllers/WebSocketHandler.php similarity index 91% rename from src/WebSockets/Controllers/PusherController.php rename to src/WebSockets/Controllers/WebSocketHandler.php index d7fa807..7ceb1a6 100644 --- a/src/WebSockets/Controllers/PusherController.php +++ b/src/WebSockets/Controllers/WebSocketHandler.php @@ -3,18 +3,18 @@ namespace BeyondCode\LaravelWebSockets\WebSockets\Controllers; use BeyondCode\LaravelWebSockets\Events\ConnectionEstablished; +use BeyondCode\LaravelWebSockets\WebSockets\Exceptions\WebSocketException; use BeyondCode\LaravelWebSockets\WebSockets\Messages\RespondableMessageFactory; use BeyondCode\LaravelWebSockets\QueryParameters; use Exception; use Ratchet\ConnectionInterface; use Ratchet\RFC6455\Messaging\MessageInterface; -use BeyondCode\LaravelWebSockets\Server\WebSocketController; use BeyondCode\LaravelWebSockets\ClientProviders\Client; use BeyondCode\LaravelWebSockets\WebSockets\Channels\ChannelManager; -use BeyondCode\LaravelWebSockets\WebSockets\Exceptions\PusherException; use BeyondCode\LaravelWebSockets\WebSockets\Exceptions\UnknownAppKey; +use Ratchet\WebSocket\MessageComponentInterface; -class PusherController extends WebSocketController +class WebSocketHandler implements MessageComponentInterface { /** @var \BeyondCode\LaravelWebSockets\WebSockets\Channels\ChannelManager */ protected $channelManager; @@ -46,7 +46,7 @@ class PusherController extends WebSocketController public function onError(ConnectionInterface $connection, Exception $exception) { - if ($exception instanceof PusherException) { + if ($exception instanceof WebSocketException) { $connection->send(json_encode( $exception->getPayload() )); diff --git a/tests/ConnectionTest.php b/tests/ConnectionTest.php index fc0245e..a278b7d 100644 --- a/tests/ConnectionTest.php +++ b/tests/ConnectionTest.php @@ -5,19 +5,19 @@ namespace BeyondCode\LaravelWebSockets\Tests; use BeyondCode\LaravelWebSockets\ClientProviders\Client; use BeyondCode\LaravelWebSockets\WebSockets\Exceptions\InvalidSignature; use BeyondCode\LaravelWebSockets\WebSockets\Exceptions\UnknownAppKey; -use BeyondCode\LaravelWebSockets\WebSockets\Controllers\PusherController; +use BeyondCode\LaravelWebSockets\WebSockets\Controllers\WebSocketHandler; use BeyondCode\LaravelWebSockets\Tests\Mocks\Message; class ConnectionTest extends TestCase { - /** @var \BeyondCode\LaravelWebSockets\WebSockets\Controllers\PusherController */ + /** @var \BeyondCode\LaravelWebSockets\WebSockets\Controllers\WebSocketHandler */ protected $pusherServer; public function setUp() { parent::setUp(); - $this->pusherServer = app(PusherController::class); + $this->pusherServer = app(WebSocketHandler::class); } /** @test */ From 8f13738d95eeecf57de12c605da2cf52058c0a9e Mon Sep 17 00:00:00 2001 From: Marcel Pociot Date: Tue, 27 Nov 2018 21:07:21 +0100 Subject: [PATCH 2/2] wip --- src/Exceptions/InvalidWebSocketController.php | 6 ++--- src/Server/Router.php | 2 +- src/Server/WebSocketController.php | 27 ------------------- 3 files changed, 4 insertions(+), 31 deletions(-) delete mode 100644 src/Server/WebSocketController.php diff --git a/src/Exceptions/InvalidWebSocketController.php b/src/Exceptions/InvalidWebSocketController.php index 4a61c1c..2c03d9c 100644 --- a/src/Exceptions/InvalidWebSocketController.php +++ b/src/Exceptions/InvalidWebSocketController.php @@ -2,14 +2,14 @@ namespace BeyondCode\LaravelWebSockets\Exceptions; -use BeyondCode\LaravelWebSockets\Server\WebSocketController; +use Ratchet\WebSocket\MessageComponentInterface; class InvalidWebSocketController extends \Exception { public static function withController(string $controllerClass) { - $websocketControllerClass = WebSocketController::class; + $messageComponentInterfaceClass = MessageComponentInterface::class; - return new static("Invalid WebSocket Controller provided. Expected instance of `{$websocketControllerClass}`, but received `{$controllerClass}`."); + return new static("Invalid WebSocket Controller provided. Expected instance of `{$messageComponentInterfaceClass}`, but received `{$controllerClass}`."); } } \ No newline at end of file diff --git a/src/Server/Router.php b/src/Server/Router.php index eef48f0..41a7bc8 100644 --- a/src/Server/Router.php +++ b/src/Server/Router.php @@ -27,7 +27,7 @@ class Router public function websocket(string $uri, $action) { - if (!is_subclass_of($action, WebSocketController::class)) { + if (!is_subclass_of($action, MessageComponentInterface::class)) { throw InvalidWebSocketController::withController($action); } diff --git a/src/Server/WebSocketController.php b/src/Server/WebSocketController.php deleted file mode 100644 index d2bda8f..0000000 --- a/src/Server/WebSocketController.php +++ /dev/null @@ -1,27 +0,0 @@ -