Как сделать отправку сообщений через websosket с динамической задержкой?
Нужно сделать динамическую отправку сообщений через websocket. Как сделать отправку всем сразу либо нужной группе я знаю, но нужна именно отправка с задержкой и здесь увы я не знаю в какую сторону копать.
Под динамической отправкой подразумевается следующий цикл, например: У нас есть сервис, где например создаётся запись, и есть пару сотен желающих увидеть эту запись, но по условию кто-то должен его увидеть сразу, а кто-то с задержкой, для каждого желающего она разная: от 1 до 120 секунд.
На данный момент получение этих записей происходит с помощью http. Но так как таких желающих очень много 2000-3000 человек, которые запрашивают этот список раз в секунду создаётся большая нагрузка и много трафика.
Чтобы избежать этого хочу, прикрутил websocket, но как быть с задержкой? Принимаю любые ваши варианты и версии на рассмотрение.
monday_suicide, на данный момент использую библиотеку workerman для сокет сервера, клиенты которые хотят увидеть запись это android и ios приложения. В чем плюс mqtt?
Не силен в веб сокетах, но насколько я понимаю, у вас же будет постоянно работающий сервер на пхп, где можно реализовать любые проверки кому какие сообщения отправлять в данный момент. Повторюсь, не силен в этой технологии, но я принципиальной проблемы не вижу это сделать. У вас же скрипт сервера будет работать постоянно, делаете какую нибудь цикличность и по условиям отдаете нужные сообщения нужным пользователям(клиентам).
Приходит запрос, смотришь, если нужно отправить сейчас отправляешь сейчас, то что нужно отправить через время, отправляешь запись в массив (который в памяти лежит). Создаешь таймер например на каждую секунду, в нем пробегаешь по этому массиву и если время подошло, то отправляешь и удаляешь запись из него. Профит.