From dda301dbec7db68dc258a8e894310fc1341495bf Mon Sep 17 00:00:00 2001 From: Henk van der Velden Date: Fri, 22 May 2020 14:33:25 +0200 Subject: [PATCH] Secure websockets --- libraries/Codeigniter_websocket.php | 43 +++++++++++++++-------------- 1 file changed, 22 insertions(+), 21 deletions(-) diff --git a/libraries/Codeigniter_websocket.php b/libraries/Codeigniter_websocket.php index ea8d1fb..99ac85c 100644 --- a/libraries/Codeigniter_websocket.php +++ b/libraries/Codeigniter_websocket.php @@ -131,28 +131,29 @@ public function __construct(array $config = array()) public function run() { // Initiliaze all the necessary class - $server = IoServer::factory( - new HttpServer( - new WsServer( - new Server() - ) - ), - $this->port, - $this->host - ); - - //If you want to use timer - if ($this->timer != false) { - $server->loop->addPeriodicTimer($this->timer_interval, function () { - if (!empty($this->callback['citimer'])) { - call_user_func_array($this->callback['citimer'], array(date('d-m-Y h:i:s a', time()))); - } - }); - } - - // Run the socket connection ! - $server->run(); + // wss:// + // https://github.com/ratchetphp/Ratchet/issues/489#issuecomment-457714221 + // https://forums.phpfreaks.com/topic/309486-websockets-will-not-work-over-tlsssl/?do=findComment&comment=1571386 + $app = new \Ratchet\Http\HttpServer( + new \Ratchet\WebSocket\WsServer( + new Server() + ) + ); + + $loop = \React\EventLoop\Factory::create(); + + $secure_websockets = new \React\Socket\Server($this->host . ':' . $this->port, $loop); + $secure_websockets = new \React\Socket\SecureServer($secure_websockets, $loop, [ + 'local_cert' => '/path/to/server.crt', + 'local_pk' => '/path/to/server.key', + 'allow_self_signed' => TRUE, // allow self signed certs, should be false in production + 'verify_peer' => FALSE + ]); + + $secure_websockets_server = new \Ratchet\Server\IoServer($app, $secure_websockets, $loop); + + $secure_websockets_server->run(); } /**