Обязательно ли для работы с сокетами привлекать Node.js?
В качестве backend'а проекта используется YII2 Framework с публичным приложением (YII Frontend), "админкой" (YII Backend) и модулем (YII-модуль), который обеспечивает REST API.
Публичное приложение (YII Frontend) реализовано частично статическим html (вывод обычных view), а частично с применением Angular и Vue.js. А админка (YII Backend) реализована полностью на Angular.
Те части у публичного приложения, которые реализованы на Angular, общаются с сервером через REST API. А админка общается с сервером только через REST API.
Возникла необходимость в написании нативных iOS- и Android-приложений с такой возможностью, чтобы в режиме реального времени они могли отображать динамически изменяемую информацию. Например, пользователь с ролью Роль 1 в мобильном приложении сменил статус объекта Объект 1. Пользователь с ролью Роль 2сразу же это увидел. Очевидно, что для этого необходимо привлекать сокеты.
Подскажите, пожалуйста, стоит ли для такой задачи привлекать Node.js, если весь проект реализован только на PHP? Может организовать сокеты с помощью PHP? Насколько это будет эффективно для большого количества пользователей? Насколько я знаю, Node.js годится куда лучше для очень большого количества сокет-подключений, чем решение на PHP.
Ведь наверняка в Enterprise-проектах в качестве сокет-сервера выбрали бы не PHP, а именно Node.js.
Можно на PHP, при помощи того же Ratchet.
Есть желание, можно и на ноде а еще лучше Go.
Я делал на всех вариантах, разницы особой не заметил, при 20к обращений в минуту.
При больших нагрузках, пых конечно сдает и памят садиться.
Моб. клиент будет устанавливать с сокет-сервером соединение только после успешной авторизации (YII). Т.е., web-приложение после успеха отдаст моб. клиенту куки с неким ИД. После этого моб. клиент возьмёт этот ИД и инициирует соединение с сокет-сервером (ИД будет передаваться в заголовке сокет-запроса). Коннект будет успешным, если ИД окажется корректным.
Насколько легко реализовать такую схему, если сокет-сервер делать на Go?
Кирилл, Мобильное приложение с куки?
Т.е. для REST API под мобильное устройство и вообще в api, вы не используете JWT ?
Вы уверенны что приложение пропустит AppStore ?
Socket на Go делает проще простого.
Соединение с БД тоже.
Если вы уж отдаете куки, то формируйте их в Go, если конечно захотите с ним работать.
недавно проводил анализ вариантов для решения этой типичной задачи, выбор пал на проект https://github.com/centrifugal/centrifugo - очень удобный, хорошая докуменация, превосходная производительность, современный, поддерживается. Стоит отметить, что на тот момент, когда я общался с создателем этого фреймворка, нельзя было передать данные с клиента на сервер через вебсокеты. Но часто это и не нужно для решения.