Nodejs и обмен сообщениями

Аватар пользователя WillWe WillWe 8 июля 2021 в 7:47

Народ, привет!
Чот я голову сломал.
Несколько месяцев назад я делал пет-проект, в котором предполагается обмен сообщениями между пользователями.
Решил настроить это через nodejs.
Всё настроил, проверил. Всё работало, сообщения уходили и приходили, при этом использовался ssl и nodejs прекрасно с ним работал.
Потом я отложил этот проект до лучших времен и ничего вообще не трогал. Иногда только заходил посмотреть, что ничего не упало.

И вот сегодня захожу снова, а друпал говорит что nodejs модуль не видит сертификата, точнее говорит, что срок действия его истёк.
Там идёт обращение по 8080 и 8081 порту. Сам сайт сертификат видит и он действителен до сентября. А по 8080 и 8081 порту говорит что он истёк 3 июля.
Файлы сертификата на месте.
В чём тут может быть порыта собака?
Ладно бы он никогда не работал, но сначала то всё было ок!!!

Лучший ответ

Аватар пользователя WillWe WillWe 8 июля 2021 в 9:02
1

Народ, я разобрался в чём дело. Оказывается пользователя, под которым запускается js скрипт не было доступа к файлам сертификата. При чем сначала то он был, а при перевыпуске эти чортовы сертификаты поменяли хозяина и права сбросились (как бы это решить то автоматически.... надо думать...)
При чем, я менял права уже, но пока не перезапустил сами приложения js (типа forever restartall) он всёравно не работал. Вот так вот.
То есть такое ощущение, что даже если настроить права к сертификатам для пользователя js, всёравно при перевыпуске он будет видеть старые и нужно время от времени перезапускать сами приложения js??? ну и гемор )))

Комментарии

Аватар пользователя marassa marassa 8 июля 2021 в 8:06

Прошу прощения что вклиниваюсь в тему, но давно хотел спросить: а почему именно nodejs используется для обмена сообщениями? Что такого есть в nodejs, что в принципе нереализуемо на PHP?

Аватар пользователя WillWe WillWe 8 июля 2021 в 9:03
1

А причина проста - вебсокеты. Обмен сообщениями в реальном времени безо всякого аякса. Юзер отправил - другой тут же получил. И всё это без дёргания сервера аяксом - красиво же.
Сейчас всё заработало.

Аватар пользователя marassa marassa 8 июля 2021 в 9:35

Спасибо, более-менее понятно. Вижу, что есть реализации websockets и для PHP, но при этом опытные люди пишут, что все равно проще это делать на nodejs даже если основной сайт на PHP.
Поверю опытным людям, самому глубоко вникать пока повода нет Wink

Аватар пользователя WillWe WillWe 8 июля 2021 в 10:47

Просто для друпала был модуль уже - node js integration и ещё один - private messages, кажется так.
Вот я и взял уже это решение. Там правда конечно в последнем модуле всё неидеально и глюки, но главное что мессаги ходят туда-сюда, а интерфейс я надеюсь подшаманить с помощью css....

Аватар пользователя EvgenySorokin EvgenySorokin 8 июля 2021 в 8:21

Я бы предположил, что сам сайт работает с одними сертификатами, а для сервера ноды какие-то другие были указаны (возможно, что полученные через letsencrypt, с малым сроком жизни. Или для сайта сертификат перевыпустился автоматически, а для ноды он лежит в другом месте). В конфигах можно найти эти сертификаты и посмотреть в них срок действия.

Аватар пользователя WillWe WillWe 8 июля 2021 в 9:02
1

Народ, я разобрался в чём дело. Оказывается пользователя, под которым запускается js скрипт не было доступа к файлам сертификата. При чем сначала то он был, а при перевыпуске эти чортовы сертификаты поменяли хозяина и права сбросились (как бы это решить то автоматически.... надо думать...)
При чем, я менял права уже, но пока не перезапустил сами приложения js (типа forever restartall) он всёравно не работал. Вот так вот.
То есть такое ощущение, что даже если настроить права к сертификатам для пользователя js, всёравно при перевыпуске он будет видеть старые и нужно время от времени перезапускать сами приложения js??? ну и гемор )))

Аватар пользователя gun_dose gun_dose 8 июля 2021 в 9:58

Приложения на node.js имеют свойство "подтекать" со временем, сжирая всё больше и больше ресурсов и работая всё медленнее. Поэтому иногда имеет смысл ставить перезапуск приложения в крон, например, раз в сутки или раз в неделю, в зависимости от нагруженности приложения.

Аватар пользователя WillWe WillWe 8 июля 2021 в 10:49

да, я уже так и сделал - тупо раз в сутки перезапускаю forever restartall и всё. Заодно и с сертификатами теперь вроде как проблем быть не должно.