Я работаю над проектом живого чата Ratchet (http://socketo.me/) в Laravel. У меня все работает нормально, но после установки SSL-сертификата на мой домен веб-сокет не соединяется с сервером веб-сокетов. Я собрал cpanel с WHMсамостоятельно на выделенном сервере и установите требуемые модули.
Код моего файла server.php для запуска на порту сервера:
$server = IoServer::factory(
new HttpServer(
new WsServer(
new ChatSocket()
)
),
8080
);
$server->run();
Мой класс ChatSocket, в котором выполняется весь код, сохранитеи получить данные:
class ChatSocket implements MessageComponentInterface {
protected $clients;
public function __construct() {
$this->clients = new \SplObjectStorage;
}
public function onOpen(ConnectionInterface $conn) {
//store the new connection
$this->clients->attach($conn);
echo "someone connected\n";
}
public function onMessage(ConnectionInterface $from, $msg) {
//send the message to all the other clients except the one who sent.
foreach ($this->clients as $client) {
if ($from !== $client) {
$client->send($msg);
}
}
}
public function onClose(ConnectionInterface $conn) {
$this->clients->detach($conn);
echo "someone has disconnected";
}
public function onError(ConnectionInterface $conn, \Exception $e) {
echo "An error has occurred: {$e->getMessage()}\n";
$conn->close();
}
}
, когда я пытаюсь соединиться с http, как показано ниже, код работает нормально для меня.
var conn = new WebSocket('ws://mydomain.com:8080');
, но когда я внедряю SSL-сертификат и меняю ws: // to wss: // тогда это не работает для меня, как показано ниже,
var conn = new WebSocket('wss://mydomain.com:8080');
Я также ищу на этой платформе и пробую множество решений для ее запуска, устанавливаю ProxyPass на сервере и пытаюсьподключиться к ProxyPass, разместив приведенный ниже код в файле httpd.conf сервера, но он также не работает для меня. Я также загрузил модули для ProxyPass,
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so
LoadModule proxy_http_module modules/mod_proxy_http.so
<IfModule mod_proxy.c>
<IfModule mod_proxy_ajp.c>
ServerName www.mydomain.com
ProxyRequests On
ProxyVia On
ProxyPass /_ws_ ws://mydomain.com:8080
ProxyPassReverse /_ws_ ws://mydomain.com:8080
</IfModule>
</IfModule>
После добавления я перезаписываюrtd httpd файл и перезапустите полный сервер, а также, чтобы убедиться, что сервер apache перезапущен.
Пожалуйста, помогите мне подключиться через websocket с SSL.
Мои вопросы,
- Мне не хватает чего-нибудь для реализации SSL?
- Есть ли способ проверить, работает ли ProxyPass правильно или нужен какой-либо модуль для загрузки, а затем попытаться использовать его?
- Для использования ProxyPassв Laravel, что-нибудь нужно определить в Laravel, или ProxyPass работает как свой собственный?
- Я устанавливаю WHM cpanel, и он также не работает с поддоменами, я что-то упустил при установке WHM cpanel на свой выделенныйсервер?