Здравствуйте!
Мне нужно установить модуль nodejs для работы модуля chatroom. Node.js на сервере установлен, drupal-nodejs установлен согласно инструкции: https://github.com/beejeebus/drupal-nodejs, конфиг ниже:
scheme: 'http',
port: 3000,
host: 'advokati.kz',
resource: '/socket.io',
serviceKey: 'qwerty1234',
backend: {
port: 8080,
host: 'advokati.kz',
scheme: 'http',
basePath: '',
messagePath: '/nodejs/message'
},
debug: true,
sslKeyPath: '',
sslCertPath: '',
sslCAPath: '',
baseAuthPath: '/nodejs/',
extensions: [],
clientsCanWriteToChannels: false,
clientsCanWriteToClients: false,
transports: ['websocket', 'flashsocket', 'htmlfile', 'xhr-polling', 'polling', 'json-polling'],
jsMinification: true,
jsEtag: true,
logLevel: 1,
rejectUnauthorized: false
};
порт для бэкенда используется 8080, потому что на 80 порту апач. Порт 3000 открыт - проверил через netstat. Установлен модуль Nodejs integration для друпал 8. Скриншот настроек модуля:
В отчете о состоянии выводится сообщение: "The Node.js server was successfully reached."
При создании новой chatroom интерфейсы чата не отображаются, а в консоли выводится: WebSocket connection to 'ws://advokati.kz:3000/socket.io/?EIO=3&transport=websocket&sid=bof_wppH3Yb8xfUZAABl' failed: WebSocket is closed before the connection is established.
Что может быть не так?
Комментарии
https://www.drupal.org/node/1713530 читали?
https://www.drupal.org/node/2456689 apache настраивали ?
Настройку модуля делал по инструкции. А про настройку apache не знал. Сделал ее согласно этой инструкции - https://www.drupal.org/node/2456689, только порты оставил прежние - 8080 и 3000.
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName advokati.kz
ServerAlias www.advokati.kz
DocumentRoot /var/www/advokati/data/www/advokati.kz
<Directory /var/www/advokati/data/www/advokati.kz>
Header set Access-Control-Allow-Origin "*"
Header set Access-Control-Allow-Methods "GET, POST, OPTIONS"
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
ProxyRequests off
<Proxy *>
Header set Access-Control-Allow-Origin "*"
Header set Access-Control-Allow-Methods "GET, POST, OPTIONS"
Order deny,allow
Allow from all
</Proxy>
<Location /var/www/advokati/data/www/advokati.kz>
ProxyPass http://localhost:8080/
ProxyPassReverse http://localhost:8080/
</Location>
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName advokati.kz
ServerAlias www.advokati.kz
DocumentRoot /var/www/advokati/data/www/advokati.kz
<Directory /var/www/advokati/data/www/advokati.kz>
Header set Access-Control-Allow-Origin "*"
Header set Access-Control-Allow-Methods "GET, POST, OPTIONS"
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
ProxyRequests off
<Proxy *>
Header set Access-Control-Allow-Origin "*"
Header set Access-Control-Allow-Methods "GET, POST, OPTIONS"
Order deny,allow
Allow from all
</Proxy>
<Location /var/www/advokati/data/www/advokati.kz>
ProxyPass http://localhost:3000/
ProxyPassReverse http://localhost:3000/
</Location>
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Но результат тот же - отчет о состоянии показывает, что есть соединение с nodejs, но фактически nodejs не работает, в консоли выводится: WebSocket connection to 'ws://advokati.kz:3000/socket.io/?EIO=3&transport=websocket&sid=ySIATi2yOAl7TRM5AAFS' failed: WebSocket is closed before the connection is established.
Что может быть не так? Спасибо!
Настраивал apache для ноды вот так например
httpd-vhosts.conf
<VirtualHost *:80>
ServerAdmin admin@site.com
ServerName site.com
ServerAlias www.site.com
ProxyRequests off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
<Location />
ProxyPass http://localhost:3000/
ProxyPassReverse http://localhost:3000/
</Location>
</VirtualHost>
Очевидно, проблема у вас не на стороне друпала, а на стороне ноды.
Посмотрите вот эту ссылку
И вообще, накой вам прятать ноду за апач, если она висит на другом порту?