From c6c65fde8a1712df52182024a238191f36a0fb7f Mon Sep 17 00:00:00 2001 From: Marcel Pociot Date: Thu, 22 Nov 2018 23:55:39 +0100 Subject: [PATCH] wip --- config/config.php | 30 ++++++++++++++++++++++++ src/LaravelWebSocketsServiceProvider.php | 6 +++++ src/Server/WebSocketServer.php | 9 +++++-- 3 files changed, 43 insertions(+), 2 deletions(-) create mode 100644 config/config.php diff --git a/config/config.php b/config/config.php new file mode 100644 index 0000000..c6b9665 --- /dev/null +++ b/config/config.php @@ -0,0 +1,30 @@ + [ + /* + * Path to local certificate file on filesystem. It must be a PEM encoded file which + * contains your certificate and private key. It can optionally contain the + * certificate chain of issuers. The private key also may be contained + * in a separate file specified by local_pk. + */ + 'local_cert' => null, + + /* + * Path to local private key file on filesystem in case of separate files for + * certificate (local_cert) and private key. + */ + 'local_pk' => null, + + /* + * Passphrase with which your local_cert file was encoded. + */ + 'passphrase' => null + ], + +]; \ No newline at end of file diff --git a/src/LaravelWebSocketsServiceProvider.php b/src/LaravelWebSocketsServiceProvider.php index fab5db3..cb34e5a 100644 --- a/src/LaravelWebSocketsServiceProvider.php +++ b/src/LaravelWebSocketsServiceProvider.php @@ -9,6 +9,10 @@ class LaravelWebSocketsServiceProvider extends ServiceProvider { public function boot() { + $this->publishes([ + __DIR__.'/../config/config.php' => base_path('config/websockets.php'), + ], 'config'); + $this->commands([ Console\StartWebSocketServer::class, ]); @@ -16,6 +20,8 @@ class LaravelWebSocketsServiceProvider extends ServiceProvider public function register() { + $this->mergeConfigFrom(__DIR__.'/../config/config.php', 'websockets'); + $this->app->singleton('websockets.router', function() { return new Router(); }); diff --git a/src/Server/WebSocketServer.php b/src/Server/WebSocketServer.php index 39fc22b..67ecf04 100644 --- a/src/Server/WebSocketServer.php +++ b/src/Server/WebSocketServer.php @@ -3,10 +3,11 @@ namespace BeyondCode\LaravelWebSockets\Server; use Ratchet\Http\Router; +use React\Socket\SecureServer; +use React\Socket\Server; use Ratchet\Http\HttpServer; use Ratchet\Server\IoServer; use React\EventLoop\LoopInterface; -use React\Socket\Server as Reactor; use React\EventLoop\Factory as LoopFactory; use Symfony\Component\Routing\RequestContext; use Symfony\Component\Routing\Matcher\UrlMatcher; @@ -63,7 +64,11 @@ class WebSocketServer protected function createServer(): IoServer { - $socket = new Reactor("{$this->host}:{$this->port}", $this->loop); + $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);