Смысл какой работы: у каждого пользователя генерится свой уникальный ключ в базе. Он передаётся во вьюху, где вызываем socket.io/.
Ключ и id пользователя в беке нода передаёт в yii, проверяет, данные ли это пользователя. И если да — то создаёт соккет id. И соответсвенно все взаимодействия от данного пользователя так же в беке передаёт в yii.
Для взаимодействия с вебсоккетами открываем порты 3001 — 3010
sudo ufw allow 3001:3010/tcp
sudo ufw allow 3001:3010/udp
Устанавливаем forever www.npmjs.com/package/forever
npm install -g forever
Для локальной разработки:
Создаём локальный ssl сертификат. Копируем файлы ключей (privkey.pem и fullchain.pem) в папку @app/nodejs.
Если ключи будут как то по другому называться, нужно будет переименовать их.
Для теста в @app/nodejs запускаем скрипт node notification.js чтобы увидеть, есть ошибки или нет.
Записал для примера видео, где показал ошибки, если файла нет — youtu.be/kv_yzax5k9w
Запускаем скрипт @app/nodejs/start-ssl.sh
Он запустит нужные скрипты через forever
Или просто запустить скрипты из файла app/nodejs/start-ssl.sh
Сайт на локалхосте нужно открывать через протокол https, что бы заработали веб соккеты. По http они сейчас не работают. Записал видео как запускается, как увидеть ошибку, если не запущено что то — youtu.be/2hn7fatqks0
Для удалённого сервера, где нам нужно, что бы вебсоккеты работали постоянно:
Создаём симлинки на сертификаты (значения ставим свои)
sudo cp -l /etc/letsencrypt/live/panel.olded.ru/fullchain.pem /var/www/panel.olded.ru/html/nodejs/fullchain.pem
sudo cp -l /etc/letsencrypt/live/panel.olded.ru/privkey.pem /var/www/panel.olded.ru/html/nodejs/privkey.pem
Устанавливаем forever-service
github.com/zapty/forever-service
npm install -g forever-service
Переходим в папку @app/nodejs/ и выполняем команду
sudo forever-service install general-editor-ckeditor --script general-editor-ckeditor.js
sudo forever-service install general-editor-codemirror --script general-editor-codemirror.js
sudo forever-service install join-editor --script join-editor.js
sudo forever-service install lesson --script lesson.js
sudo forever-service install user-chat --script user-chat.js
sudo forever-service install notification --script notification.js
sudo forever-service install general-2d --script general-2d.js
sudo forever-service install join-2d --script join-2d.js
sudo forever-service install lesson-course-Info --script lesson-course-Info.js
sudo forever-service install chat-room --script chat-room.js
Узнать статус. Например — sudo service lesson-course-Info status