[Решено] Кто делал интеграцию Node.js и Drupal7 ?

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

Аватар пользователя vitalii.stymkovskyi vitalii.stymkovskyi 11 февраля 2016 в 19:52

Всем привет, нужна помощь в подключении модуля Node.js integration

Пробую подключить Node.js к Drupal на домене который работает на https.
Если запускать просто на http работает все отлично, но нужно чтобы работало на https
Сам сервер в консоли создается и видно что работает (идут запросы) но на сайте ничего не происходит в логах сайта пишутся ошибки.
Уже все перепробовал не работает ((

Ошибки которые получаю

1. Error reaching the Node.js server at "nodejs/content/token" with {"token":"uxhyrYkU9DdTL9YJfI2Myj1Mrj2pxLjE4alQNkO9lhA","channel":"watchdog_dblog","notifyOnDisconnect":false} "%{"token":"uxhyrYkU9DdTL9YJfI2Myj1Mrj2pxLjE4alQNkO9lhA","channel":"watchdog_dblog","notifyOnDisconnect":false}": [0] Error opening socket ssl://********.net:8887.
2. Error reaching the Node.js server at "nodejs/content/token" with {"token":"uxhyrYkU9DdTL9YJfI2Myj1Mrj2pxLjE4alQNkO9lhA","channel":"watchdog_dblog","notifyOnDisconnect":false} "%{"token":"uxhyrYkU9DdTL9YJfI2Myj1Mrj2pxLjE4alQNkO9lhA","channel":"watchdog_dblog","notifyOnDisconnect":false}": [-111] Connection refused.

Комментарии

Аватар пользователя vitalii.stymkovskyi vitalii.stymkovskyi 12 февраля 2016 в 6:17

Вот лог с консоли

************@*****.net [~/public_html/sites/all/modules/nodejs]# node server.js
Started https server.
Socket connect - /#58ezbX19HWEBquQCAAAA
Socket connect - /#L8wW_amLbvafQkIcAAAB
Authenticating client with key "4f00d11faa75a10a7eb1fc9cfd72153c"
Sending message to backend { authToken: '4f00d11faa75a10a7eb1fc9cfd72153c',
  messageType: 'authenticate',
  clientId: '/#L8wW_amLbvafQkIcAAAB' } { uri: 'https://*****.net:443//nodejs/message',
  body: 'messageJson=%7B%22authToken%22%3A%224f00d11faa75a10a7eb1fc9cfd72153c%22%2C%22messageType%22%3A%22authenticate%22%2C%22clientId%22%3A%22%2F%23L8wW_amLbvafQkIcAAAB%22%7D&serviceKey=',
  headers:
   { 'Content-Length': 179,
     'Content-Type': 'application/x-www-form-urlencoded' },
  strictSSL: false }

А это ошибка с страницы репортов

Error reaching the Node.js server at "nodejs/content/token" with {"token":"tsDtIYmQA9r4aVUf49kO-jzVPGC3EL0Sxf_zYiFQrlk","channel":"watchdog_dblog","notifyOnDisconnect":false} "%{"token":"tsDtIYmQA9r4aVUf49kO-jzVPGC3EL0Sxf_zYiFQrlk","channel":"watchdog_dblog","notifyOnDisconnect":false}": [0] Error opening socket ssl://*****.net:8887.
Аватар пользователя vitalii.stymkovskyi vitalii.stymkovskyi 12 февраля 2016 в 0:41

нет, оно идет на ssl только когда через https работает
судя по коду который написан в includes/common.inc line 866, оно идет через tcp://
методом дебага выяснил что оно обламовается когда запускает функцию stream_socket_client и возвращает false
теперь даже не знаю куда копать...

Аватар пользователя gor gor 12 февраля 2016 в 12:20

Ту часть Nodejs кода которая отвечает за настройки поднятия сервиса на определенный порт, но я строю догадки исходя из своего опыта: ошибку что вы указали с невозможностью открыть сокет, как раз связана с тем что пхп пытается сделать ссл только по валидному сертификату в php56 и выше. В 53 еще можно было невалидный серт использовать. В php56 уже надо через curl и его опции игнорирования валидности сертификата.

Аватар пользователя vitalii.stymkovskyi vitalii.stymkovskyi 12 февраля 2016 в 12:51

gor wrote:
как раз связана с тем что пхп пытается сделать ссл только по валидному сертификату в php56 и выше.

так я ему даю валидный сертификат + это же в ядре друпала написано.
Пробую вручную сделать конект

<?php    $streamContext stream_context_create();
    
stream_context_set_option($streamContext'ssl''local_cert'dirname(__FILE__).'/pemFile.pem');
    if (
$socket stream_socket_client(
        
'ssl://'.$host.':'.$port,
        
$errno,
        
$errstr,
        
$timeout,
        
STREAM_CLIENT_CONNECT,
        
$streamContext)
    ) {
        
fwrite($socket"\n");
        echo 
fread($socket,8192);
        
fclose($socket);
    } else {
        echo 
"ERROR: $errno - $errstr\n";
    }
?>

и получаю тот же false

Аватар пользователя gor gor 12 февраля 2016 в 15:43

Потому что то, куда вы ломитесь из php не на безопастном сертификате.
Надо не php использовать с сертом, а саму ноду настраивать его использовать.

Аватар пользователя vitalii.stymkovskyi vitalii.stymkovskyi 12 февраля 2016 в 16:13

вопрос почему оно считает что сертификат не безопасный, ведь он куплен, есть все ключи. Я пробовал их слать но ему все равно на них.
С нодой еще сильно не знаком, поэтому стараюсь обойтись "малой кровью".

Аватар пользователя gor gor 12 февраля 2016 в 17:09

Потому что их надо не слать а привязывать к сервису, когда он биндится на порт.
Попробуйте более детально изучить принцип работы сертификатов, ssl https протокола.