#javascript #php #клиент_сервер
Допустим есть работники, которые выполняют работу, и менеджер, который за этим следит. Каждый раз когда работник сделал задание оно появляется у менеджера, чтобы он его принял. Как сделать, чтобы в реальном времени на странице менеджера появлялись эти новые задания, как только они появляются? Мне в голову приходит способ делать запрос каждые несколько секунд к бэкенду, но как-то страшно представить такое количество запросов каждые несколько секунд, поступающее от каждого менеджера. Можно ли как-то отправлять команду с сервера напрямую странице менеджера, с определённой командой?
Ответы
Ответ 1
Способов несколько, в зависимости от тяжести случая можно выбрать тот, который Вам больше всего понравится или который будет проще реализовать. Везде есть свои за и против. 1. Самый древний способ, и самый простой - Polling клиент подключается и говорит: Привет, я Вася, Как там дела? сервер СРАЗУ отвечает: С твоего последнего визита ничего интересного не произошло / Произошли такие-то события и закрывает соединение клиент отправляет новый запрос Я уверен добрая половина интернета работает таким способом. 2. Тоже вариант из прошлого, посложнее - Long Polling клиент подключается и говорит: Привет, я Вася, Сообщи когда что-то произойдет сервер ЖДЕТ пока произойдет событие, отвечает Событие произошло, закрывает соединение. клиент отправляет новый запрос 3. Server Sent Events - обеспечивает отправку сообщений в ОДНУ СТРОНУ, от сервера клиенту. клиент подключается и говорит: Привет, я Вася, жду сообщений и больше не может отправлять сообщения сервер ЖДЕТ пока произойдет событие, отвечает Событие произошло, и не закрывает соединение после отправки Протокол обмена - обычный текст разделенный делимитерами. 4. WebSocket - обеспечивает отправку сообщений в ОБЕ СТОРОНЫ. клиент подключается и спрашивает: Привет, я Вася, жду сообщений и может отправлять еще сообщения в любое время сервер ЖДЕТ пока произойдет событие, отвечает Событие произошло, и не закрывает соединение после отправки Протокол обмена - более сложный чем у SSE, тут уже есть заголовок и другие тонкости. Со стороны сервера, реализация SSE значительно проще, чем реализация вебсокетов. Это на случай если Ваш веб сервер не умеет что то из выше перечисленного из коробки.Ответ 2
Сам делал подобное: с помощью ajax. Просто ставишь интервал - минуты будет достаточно, а работнику выводишь сообщение - ваше задание будет проверено в течении n-минут. За сервер не бойся, тестируй и смотри нагрузку.
Комментариев нет:
Отправить комментарий