@Karimmin

Как сделать так, чтобы,когда пользователь отправлял заявку другому пользователю, она отображалась у того, кому была отправлена?

Я на сайте хочу сделать такую вещь. Пользователь находит другого пользователя с помощью строки поиска и отправляет ему заявку на контакт, и у другого пользователя эта заявка должна отображаться. Все перечисленное я уже сделал, кроме того, чтобы при нажатии на кнопку отправки заявки у другого пользователя, которого он нашел отображалась заявка. Обе страницы на одном и том же доменном имени. Как сделать такое? Описал максимально подробно. Помогите пожалуйста!
  • Вопрос задан
  • 76 просмотров
Пригласить эксперта
Ответы на вопрос 1
@rPman
На странице форма с поиском отправляет запрос (на выбор http rest get или post либо лучше используя websocket, почему - ниже) на сервер.

Сервер ищет на основе запроса клиента, смотрит, онлайн ли он (в случае с http rest это определяют таймаутами с последнего запроса, а вот с websocket все нативно и в реальном времени без проблем) и если да, шлет на все его подключения (пользователь может открыть несколько закладок в браузере или на разных компах) сообщение (с http rest геморно, клиент должен периодически делать запросы на сервер с вопросом - нет ли для меня сообщений, которые не сразу отвечают, если нет сообщений, и висят до таймаута или вообще бес конечно, выдавая по 1 байту в минуту, который просто пустышка, ради поддержания соединения).

Если пришло сообщение, клиент его выводит.
---

Для работы websocket на сервере нужна его поддержка, обычно отдельный бакэнд выступающй в виде websocket сервера и обрабатывающий запросы. Есть плагины к веб-серверам, конвертирующие это в привычный http rest стиль, но это изврат.

Когда то давно, когда websocket не был стандартом, самым простым способом слушать события с сервера был запрос на сервер и ответ в виде javascript с вызовом функции, которая собственно и есть событие (т.е. запрос на страницу подключался простым тегом < script >), сервер ничего не отправляет в канал запроса (или просто пробел по 1 в минуту чтобы по таймауту не закрылся) пока не появится необходимость. Правда клиент должен отслеживать ошибки что бы повторять запрос.

Звалось это long poolling
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы