Не работает nodejs integration

Главные вкладки

Аватар пользователя andru85 andru85 31 марта 2019 в 12:22

Здравствуйте!
Мне нужно установить модуль nodejs для работы модуля chatroom. Node.js на сервере установлен, drupal-nodejs установлен согласно инструкции: https://github.com/beejeebus/drupal-nodejs, конфиг ниже:

settings = {
  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.
Что может быть не так?

Комментарии

Аватар пользователя andru85 andru85 3 апреля 2019 в 21:08

Настройку модуля делал по инструкции. А про настройку apache не знал. Сделал ее согласно этой инструкции - https://www.drupal.org/node/2456689, только порты оставил прежние - 8080 и 3000.

ServerName localhost
<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.
Что может быть не так? Спасибо!

Аватар пользователя sas@drupal.org sas@drupal.org 4 апреля 2019 в 9:19

Настраивал 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>

Аватар пользователя gun_dose gun_dose 4 апреля 2019 в 9:49

Очевидно, проблема у вас не на стороне друпала, а на стороне ноды.
Посмотрите вот эту ссылку

И вообще, накой вам прятать ноду за апач, если она висит на другом порту?