Я пытаюсь реализовать WyriHaximus / Ratchet плагин для CakePHP 3. Мое приложение cakephp работает, например, на: blah.myhost.com, для которого включен сертификат ssl.Я настроил свой app.php для конфигурации плагинов, как это
'WyriHaximus' => [
'Ratchet' => [
'internal' => [
'address' => '0.0.0.0',
'port' => 8888,
],
'external' => [
'hostname' => 'blah.myhost.com',
'port' => 8888,
],
'defaults' => [
'retry_delay_growth' => 0.25,
],
'realm_salt' => 'y[Pw3^o`hLxn`sZkZgtIZ={?B:!Q.8',
'realm_auth_key_salt' => 'EEA~D`o:ZIIm=hR0bcD$3D+((ti:V;',
'realms' => [
'realm1' => [], // Always has to be an array
'secure' => [
'auth' => true,
'auth_key' => '5J^e=7ec5g!0j#I4.t%"0Ih2)qp]I)',
'max_retries' => 13,
],
],
],
]
, и я могу запустить сервер веб-сокетов с инструкциями здесь , который работает нормально и выдает это
2019-06-04T18:38:02.6496330 debug [Thruway\Peer\Router 5123] New router created
2019-06-04T18:38:02.6531680 info [Thruway\Authentication\AuthenticationManager 5123] New client created
2019-06-04T18:38:02.6550820 info [WyriHaximus\Ratchet\Websocket\InternalClient 5123] New client created
2019-06-04T18:38:02.6554090 info [WyriHaximus\Ratchet\Websocket\InternalClient 5123] New client created
2019-06-04T18:38:02.6560020 info [WyriHaximus\Ratchet\Security\AuthorizationManager 5123] New client created
2019-06-04T18:38:02.6614470 info [WyriHaximus\Ratchet\Security\JWTAuthProvider 5123] New client created
2019-06-04T18:38:02.6619220 info [Thruway\Peer\Router 5123] Starting router
2019-06-04T18:38:02.6685010 info [Thruway\RealmManager 5123] Got prehello...
2019-06-04T18:38:02.6687590 debug [Thruway\RealmManager 5123] Creating new realm 'thruway.auth'
2019-06-04T18:38:02.6719630 debug [Thruway\RealmManager 5123] Adding realm 'thruway.auth'
2019-06-04T18:38:02.6763120 debug [Thruway\Authentication\AuthenticationManager 5123] Client onMessage: [Thruway\Message\WelcomeMessage]
2019-06-04T18:38:02.6765620 info [Thruway\Authentication\AuthenticationManager 5123] We have been welcomed...
2019-06-04T18:38:02.6794560 debug [Thruway\Authentication\AuthenticationManager 5123] Client onMessage: [Thruway\Message\RegisteredMessage]
2019-06-04T18:38:02.6797150 info [Thruway\Role\Callee 5123] Setting registration_id for thruway.auth.registermethod (0)
2019-06-04T18:38:02.6814840 info [Thruway\RealmManager 5123] Got prehello...
2019-06-04T18:38:02.6817350 debug [Thruway\RealmManager 5123] Creating new realm 'realm1'
2019-06-04T18:38:02.6819770 debug [Thruway\RealmManager 5123] Adding realm 'realm1'
2019-06-04T18:38:02.6825430 debug [WyriHaximus\Ratchet\Websocket\InternalClient 5123] Client onMessage: [Thruway\Message\WelcomeMessage]
2019-06-04T18:38:02.6827820 info [WyriHaximus\Ratchet\Websocket\InternalClient 5123] We have been welcomed...
2019-06-04T18:38:02.6835090 info [Thruway\RealmManager 5123] Got prehello...
2019-06-04T18:38:02.6837500 debug [Thruway\RealmManager 5123] Creating new realm 'secure'
2019-06-04T18:38:02.6839950 debug [Thruway\RealmManager 5123] Adding realm 'secure'
2019-06-04T18:38:02.6845380 debug [WyriHaximus\Ratchet\Websocket\InternalClient 5123] Client onMessage: [Thruway\Message\WelcomeMessage]
2019-06-04T18:38:02.6847750 info [WyriHaximus\Ratchet\Websocket\InternalClient 5123] We have been welcomed...
2019-06-04T18:38:02.6852190 info [Thruway\RealmManager 5123] Got prehello...
2019-06-04T18:38:02.6856620 debug [WyriHaximus\Ratchet\Security\AuthorizationManager 5123] Client onMessage: [Thruway\Message\WelcomeMessage]
2019-06-04T18:38:02.6858990 info [WyriHaximus\Ratchet\Security\AuthorizationManager 5123] We have been welcomed...
2019-06-04T18:38:02.6875670 info [Thruway\Transport\RatchetTransportProvider 5123] Websocket listening on 0.0.0.0:8888
2019-06-04T18:38:02.6888710 info [Thruway\RealmManager 5123] Got prehello...
2019-06-04T18:38:02.6893150 debug [WyriHaximus\Ratchet\Security\JWTAuthProvider 5123] Client onMessage: [Thruway\Message\WelcomeMessage]
2019-06-04T18:38:02.6895540 info [WyriHaximus\Ratchet\Security\JWTAuthProvider 5123] We have been welcomed...
2019-06-04T18:38:02.6899420 debug [WyriHaximus\Ratchet\Security\JWTAuthProvider 5123] Client onMessage: [Thruway\Message\RegisteredMessage]
2019-06-04T18:38:02.6901870 info [Thruway\Role\Callee 5123] Setting registration_id for thruway.auth.jwt.onhello (0)
2019-06-04T18:38:02.6906900 debug [WyriHaximus\Ratchet\Security\JWTAuthProvider 5123] Client onMessage: [Thruway\Message\RegisteredMessage]
2019-06-04T18:38:02.6909310 info [Thruway\Role\Callee 5123] Setting registration_id for thruway.auth.jwt.onauthenticate (1)
2019-06-04T18:38:02.6928160 debug [Thruway\Authentication\AuthenticationManager 5123] Client onMessage: [Thruway\Message\InvocationMessage]
2019-06-04T18:38:02.6937120 debug [WyriHaximus\Ratchet\Security\JWTAuthProvider 5123] Client onMessage: [Thruway\Message\ResultMessage]
2019-06-04T18:38:02.6942790 debug [WyriHaximus\Ratchet\Security\JWTAuthProvider 5123] Authentication Method Registration Successful: jwt
мой статус ufw выводит этот
:~# ufw status | grep 8888
8888/tcp ALLOW Anywhere
8888/tcp (v6) ALLOW Anywhere (v6)
мой Apache default-ssl.conf для части ProxyPass выглядит следующим образом
SSLProxyEngine On
ProxyRequests Off
ProxyPass "/wss2/" "wss://blah.myhost.com:8888/"
Это код, который яработает в браузере, чтобы попытаться подключиться к веб-сокету.
var conn = new WebSocket('wss://blah.myhost.com/wss2/');
conn.onopen = function(e) {
console.log("Connection established!");
};
conn.onmessage = function(e) {
console.log(e.data);
};
Я получаю это сообщение в apache access.log, но без ошибки
04/Jun/2019:17:47:56 +1200] "GET /wss2/ HTTP/1.1" 500 4577 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36"
Ответ, который я получаю после длительноговремя в браузере это
WebSocket connection to 'wss://blah.myhost.com/wss2/' failed: WebSocket opening handshake timed out
Другие методы, которые я пытался включить, включают использование движка перезаписи в моем Apache default-ssl.conf
SSLProxyEngine On
RewriteEngine On
RewriteCond %{HTTP:Upgrade} =websocket [NC]
RewriteRule ^/ wss://blah.myhost.com:8888/ [P,L]
использование этого для подключения
var conn = new WebSocket('wss://blah.myhost.com/');
Это дает точно такой же ответ
Также, когда я изменяю конфигурацию app.php, чтобы использовать внешний ip 0.0.0.0, чтобы сервер слушал 0.0.0.0:8888, а затем переписываю в wss: //0.0.0.0: 8888 / Я получаю эту ошибку на apache error.log при попытке подключениякт.
[Tue Jun 04 18:27:04.089837 2019] [proxy:error] [pid 5648] (20014)Internal error (specific information not available): [client ^^^.^^^.^^^.^:^^^^] AH01084: pass request body failed to 0.0.0.0:8888 (0.0.0.0)
[Tue Jun 04 18:27:04.090047 2019] [proxy:error] [pid 5648] [client ^^^.^^^.^^^.^:^^^^] AH00898: Error during SSL Handshake with remote server returned by /
Я не уверен, что я делаю неправильно;возможно, мой конфиг в app.php неверен, или я пропускаю некоторые важные шаги.