Есть код, работающий с веб-сокетами и обрабатывающий пришедшие по веб-сокету данные. Код (т.е. открыто соединение с удаленным сервером через веб-сокеты) может быть запущен очень много раз.
Куда правильнее всего поместить этот код? В Commands, Jobs, Listeners?
Тарас Сереванн: почему же? Там тоже может быть и маршрутизация (какие сообщения какой код обрабатывает) и контроллер (обработка сообщений и конвертация данных из одного представления в другое).
Вы лучше больше деталей о этом коде укажите. Как он запускается (скорее всего это cli скрипт, так?), из чего состоит (это же не один "класс"?).
Сергей Протько: Давай я тебе тогда подробно опишу, что мне нужно. Я создаю бота для Slack, который использует Slack RTM API. Грубо говоря, RTM API это WebSocket соединение к Slack, в которое Slack пушит какие-то ивенты.
Я использую RTM API не напрямую, а на более высоком уровне, с помощью вот этого пакета: https://github.com/coderstephen/slack-client
Мне нужно, чтобы для каждой команды (грубо говоря, для каждого зарегистрированого на сайте пользователя), которая добавила моего бота, открывалось web-socket соединение к Slack RTM со специальным токеном. И на основе ивентов, который приходят по этому соединению, обрабатывалась какая-то логика непосредственно бота. Пакет coderstephen/slack-client позволяет сделать это вот так: pastebin.com/CHKNAdG1
С точки зрения реализации обработки у меня вопросов нет. Меня интересует, куда эту реализацию (т.е. работу с сокетом) лучше всего поместить. Точно не в роутер и не в контроллер.
Command (папка Commands и возможный запуск из консоли) вроде бы не очень подходит, потому что нужно
1) открывать таких соединений очень много (чит. выше: на каждого пользователя)
2) нужно мониторить, чтобы соединения не падали (или при падении восстанавливались)
Вроде как должен подойти тип Event или Listener, но, судя по документации, он совсем для другого используется.
В общем, как правильнее всего сделать? Сам на Ларавеле кодю только неделю