Всякий раз, когда я делаю какой-либо запрос ... Web-сокет или обычный запрос на выборку, в конце запроса (закрытие или завершение выборки Web-сокета) сервер js узла падает с
{ Error: read ECONNRESET
at TCP.onStreamRead (internal/stream_base_commons.js:111:27) errno: 'ECONNRESET', code: 'ECONNRESET', syscall: 'read' }
Это происходит только в Windows, но отлично работает на Centos VPS
Используемые технологии:
Windows 10 with xampp v3.2.2 and Apache/2.4.29 (Win32)
Node v10.15.0
Express 4.16.3
ws 3.3.3 from npm
Я попытался просмотреть экспресс и ws, чтобы увидеть, есть ли какой-нибудь обработчик ошибок, который я мог бы пропустить, но я не мог понять, так ли это на самом деле.
Я также пытался добавить retry=0 timeout=60 keepalive=On
за линией ProxyPass, как я видел в чьей-то конфигурации, но это тоже не имело значения.
Это моя текущая конфигурация виртуального хоста Apache в Windows
<VirtualHost *:80>
DocumentRoot C:\Users\username\Desktop\Developement\app\public_html
ServerName app.localhost
ErrorLog "C:\Users\username\Desktop\Developement\logs\error.log"
CustomLog "C:\Users\username\Desktop\Developement\logs\access.log" common
<Directory "C:\Users\username\Desktop\Developement\app\public_html">
DirectoryIndex index.php
AllowOverride All
Order allow,deny
Allow from all
php_value auto_prepend_file C:\Users\username\Desktop\Developement\app\prepend.php
</Directory>
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyRequests Off
RewriteEngine On
RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC]
RewriteCond %{HTTP:CONNECTION} ^Upgrade$ [NC]
RewriteRule .* ws://localhost:8080%{REQUEST_URI} [P]
ProxyPass /ws http://127.0.0.1:8080 retry=0 timeout=60 keepalive=On
ProxyPassReverse /ws http://127.0.0.1:8080
ProxyPass /login http://127.0.0.1:8080/login retry=0 timeout=60 keepalive=On
ProxyPassReverse /login http://127.0.0.1:8080/login
</VirtualHost>
<VirtualHost *:443>
DocumentRoot C:\Users\username\Desktop\Developement\app\public_html
ServerName app.localhost
ErrorLog "C:\Users\username\Desktop\Developement\logs\error.log"
CustomLog "C:\Users\username\Desktop\Developement\logs\access.log" common
<Directory "C:\Users\username\Desktop\Developement\app\public_html">
DirectoryIndex index.php
AllowOverride All
Order allow,deny
Allow from all
php_value auto_prepend_file C:\Users\username\Desktop\Developement\app\prepend.php
</Directory>
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
SSLProxyEngine On
SSLEngine on
SSLCertificateFile "C:\xampp\apache\cert\app.localhost\server.crt"
SSLCertificateKeyFile "C:\xampp\apache\cert\app.localhost\server.key"
ProxyRequests Off
RewriteEngine On
RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC]
RewriteCond %{HTTP:CONNECTION} ^Upgrade$ [NC]
RewriteRule .* ws://localhost:8080%{REQUEST_URI} [P]
ProxyPass /ws http://127.0.0.1:8080 retry=0 timeout=60 keepalive=On
ProxyPassReverse /ws http://127.0.0.1:8080
ProxyPass /login http://127.0.0.1:8080/login retry=0 timeout=60 keepalive=On
ProxyPassReverse /login http://127.0.0.1:8080/login
</VirtualHost>
Я в основном скопировал этот конфиг с сервера centos, так что между 2. есть только незначительные различия, а именно: каталоги и тег <Directory>