Как грамотно распределять по websocket данные получаемые из одного источника?
Всем привет.
Имею websocket канал с данными(сервер 1), которые приходят без остановки, по типу как курсы с биржы, скачут постоянно.
Мне нужно эти данные раздавать с другого сервера(сервер 2).
То есть: Сервер_1->Сервер_2->Несколько_Клиентов
При этом подключение к Сервер_1 должно быть одно(Это важно)
Возможно ли такое реализовать на минималках на php?
Спасибо.
Хоть убейся, но нужно два компонента.
Постоянно работающий сервис, который держит коннект к серверу 1 и пишет инфу в твою БД.
И основной сервис для взаимодействия с клиентами, который умеет отдавать инфу клиенту согласно его запросу (дата, какой тикер отдавать, и так далее).
Я думал про БД, а какую лучше использовать? Там же безостановочное обновление данных будет.
В общей сложности будет порядка 200 записей, которые будет постоянно(в секунду несколько записей может быть) обновлять и которые выборно надо отдавать.
Еще такой вопрос, обычный VPS подойдет какой-то мощный или лучше сервер? Я просто с серверами не работал особо и не в курсе, как активное соединение будет нести нагрузку и будет ли вообще то делать, если я буду держать постоянный конект к Сервер_1 с Сервер_2.
ALEXU83, тут вообще нужно уточнить, что тебе нужно.
Просто размножить поток на несколько клиентов, и пусть они сами разбираются? Или иметь какую-то историю? И должна ли история быть персистентной, т.е. переживать перезапуск?
Потому что в первом случае по идее можно разрулить без БД, достаточно иметь словарь "тикер-вебсокеты". Поступила новая запись, смотрим её тикер, смотрим, кто вот прямо сейчас имеет активный вебсокет и подписан на этот тикер, рассылаем. Как на питоне это соорудить, я примерно могу представить, а вот на пхп, извини, не мой профиль.
А насчёт мощности, извини, встречный вопрос: сколько клиентов у тебя будет? Потому что единицы записей в секунду - это не сказать чтобы супер много. Если клиентов в пределах сотни, то ИМХО можно оба сервиса на одной vps запустить, и ещё резерв останется.
Vindicar, клиентов не много, не более 100 подключений.
Клиенту просто поток. Там уже я настраиваю индивидуально данные. Смысл просто размножить поток и все.
Может я плохо гуглил, но не нашел инфы про такую реализацию. С вебсокетом я работал на базовом уровне - тупо Сервер-Клиент.
По идее, нужно при новом подключении клиента проверять, есть ли уже активное подключение или нет и если есть, то использовать его. Мне кажется это должно как-то так работать.