WebSockets как сделать сервер по SSL протоколу WSS://
Всем привет, пишу websocket сервер, получилось сделать, чтоб сервер работал по ws://
протоколу, но когда я соединяю с фронтом на angular, а сайт работает по https, то он ругается на то, что не может передавать данные по незащищённому протоколу ws://
и нужно использовать wss://
, но сервер почему-то не работает на wss://
, а только ws://
.
Как исправить данную проблему и запустить всё-таки всё по защищённому протоколу?
Код сервака:
protected function execute(InputInterface $input, OutputInterface $output): int
{
$entityManager = $this->container->get('doctrine.orm.entity_manager');
$jwtManager = $this->container->get('lexik_jwt_authentication.jwt_manager');
$dotenv = new Dotenv();
$dotenv->loadEnv(dirname(__DIR__, 2) .'/.env');
$devMode = $_ENV['DEVMODE'];
$output->writeln("<fg=gray;options=bold>DEVMODE = {$devMode}</>");
$loop = Loop::get();
$server = new SocketServer('0.0.0.0:8080',[
'local_cert' => '/ssl/cert.pem',
'local_pk' => '/ssl/key.pem',
'allow_self_signed' => true,
'verify_peer' => false
]);
$webServer = new IoServer(
new HttpServer(
new WsServer(
new Server($entityManager, $jwtManager, $devMode)
)
),
$server,
$loop
);
$output->writeln('<fg=green;options=bold>Starting WebSocket server on port 8080</>');
echo $webServer->socket->getAddress() . PHP_EOL;
$loop->run();
return Command::SUCCESS;
}
Источник: Stack Overflow на русском