PHP Workerman: Ошибка SSL23_GET_CLIENT_HELLO:http request
При запуске приложения на хостинге с SSL приложение выбрасывает несколько раз в минуту ошибку: SSL23_GET_CLIENT_HELLO:http request.
Приложение пишу на PHP в связке с JavaScript.
На стороне PHP использую Workerman + PHPSocketIO со следующим кодом:
<?php
use Workerman\Worker;
use Workerman\WebServer;
use Workerman\Autoloader;
use PHPSocketIO\SocketIO;
require_once __DIR__ '/vendor/autoload.php';
$context = array(
'ssl' => array(
'allow_self_signed' => true,
'local_cert' => 'ssl/cert.pem',
'local_pk' => 'ssl/privkey.pem',
'verify_peer' => false,
'verify_peer_nam' => false
)
);
$io = new SocketIO(1234, $context);
$io->on('connection', function($socket) {
printf("Новое соединение%s", "\n");
$socket->on('message', function($message) {
$socket->broadcast->emit('message', $message);
});
});
Worker::runAll();
На клиенте пишу следующий код:
<textarea id="messages"></textarea><br />
<input type="text" id="message" name="message" /><br />
<button id="send">Send</button>
<script type="text/javascript" defer>
let messages = document.getElementById('messages');
let message = document.getElementById('message');
let send = document.getElementById('send');
let socket = io.connect(':1234', {secure: true});
socket.on('message', data => {
messages.value += `${data}\r\n`
})
send.addEventListener('click', e => {
e.preventDefault();
messages.value += `${message.value}\r\n`
socket.emit('message', message.value)
message.value = ''
})
</script>
Собственно вопрос: почему возникает стек из ошибок:
SSL handshake error: stream_socket_enable_crypto(): SSL operation failed with code 1. OpenSSL Error messages:
error:1407609C:SSL routines:SSL23_GET_CLIENT_HELLO:http request
Ответы (1 шт):
Проблема была в занятых портах. Решение оказалось максимально простым: Нужно было через netstat -tulpn получить список занятых портов и указать приложению свободный порт.