@vitaliy_balahnin
Новичок в веб-разработке

PHP-клиент для Websocket(socket.io) по wss (SSl от letsencrypt)?

Задача: посредством PHP подключиться к сокету по wss и передать данные. Если глобально, то нужна система уведомлений в реальном времени для пользователей сайта. Бэкэнд на PHP.
Обязательные условия: подключение с использованием сертификата от LetsEncrypt
Сервер: Ubuntu 16.04, PHP 7, Websocket сервер (socket.io или ws), OpenSSL включён, Файлы LetsEncrypt .crt/.ca/.pem
С сервером Websocket и подключением по wss клиента на js вопросов и проблем - нет. А вот с реализацией клиента на php проблема. Если сервер запускаю без SSL, то на php подключаюсь посредством stream_socket_client или fsockopen. Библиотеки пока никакие не пробовал, но гугление показало, что вопрос подключения по wss на PHP довольно частый. А полного ответа не встречалось. Единственные костыли, которые видел около этой темы - это проксирование. Помогите советом куда копать. Или стоит ли попробовать познакомится с Elephant и Ratchet (и есть рабочие примеры для wss)?
Пробовал на PHP stream_context_create + stream_socket_client c различными вариантами параметров, но уже запутался в них. Сейчас получаю или $errno = 0 или Bad Request 400.
$cert = 'путь к сертификату .ca или .pem';
$context = stream_context_create([ 'ssl' => [
         'allow_self_signed' => false,
          'verify_peer'   => true,
          'cafile'        => $cert,
          'local_cert'        => 'путь к сертификату .crt',
        'verify_depth'  => 3,
          'CN_match'      => 'домен',
          'disable_compression' => true,
          'SNI_enabled'         => true,
          'ciphers'             => $ciphers,
          'SNI_server_name' => 'домен'
          'capture_peer_cert' => true,
          'cafile' => $cert,
        'peer_name' => 'домен',
        'ciphers' => $ciphers,
        'disable_compression' => true,
]]);

$socket = stream_socket_client("ssl://домен:4444/web", $errno, $errstr, 30, STREAM_CLIENT_CONNECT, $context);
  • Вопрос задан
  • 1164 просмотра
Пригласить эксперта
Ответы на вопрос 2
https://github.com/walkor/Workerman
Пользовался этим пакетом, всё отлично работает. С let сертификатом.
Ответ написан
У Ratchet есть отдельный клиент Pawl, но решать вопрос с SSL придётся вне зависимости от выбранных пакетов.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Лучшие люди Иваново
от 40 000 до 90 000 руб.
N1.RU Новосибирск
от 100 000 руб.
Living Core Казань
от 50 000 руб.