Отправка данных и их получение | ajax, php и прочее

Рейтинг: 0Ответов: 1Опубликовано: 24.06.2023

Добрый вечер всем пользователям.

Есть уже похожая тема: Отправка сообщений

Но суть заключается в моментальном изменении статуса не перезагружая страницу и не производя каких либо действий.

Например 1 пользователь имеет открытый сайт, 2 пользователь пишет и отправляет сообщение.

Как для первого пользователя отобразить уведомление о том что пользователь 2 отправил ему сообщение? Интересует только момент моментального уведомления, типо : отправил-получил

Я видел timeset на ajax в N время, но запрос в БД в N время будет нагружать БД при больших кол-вах пользователей.

Вопрос заключается в том, есть ли способ как то при отправке сообщения отправителя получить моментально уведомление получателю?

если есть какие то библиотеки js/php, был бы очень благодарен

Ответы

▲ 1Принят

Старо как мир.

  1. Long pooling Делать запрос на сервер, а сервер не отпускает соеденение пока не произайдет событие или не произайдет TimeOut. Потом клиент повторно открывает соеденение.

  2. WebSocket Двухстороняя связь по протоколу WebSocket, по сути просто открытое соеденение где и сервер и клиент могут друг другу что-то сказать.

  3. SSE (Server Sent Events) Клиент открывает соеденение, сервер отправляет события до разрыва связи. При этом в отличии от сокета протокол в 100 раз примитивнее в качестве реализации, но имеет жирное ограничение, в том что только сервер шлет сообщееия клиенту, а клиент только безмолвный слушатель.

Основные всё! Далее извращения поверх этих реализаций

2.1 Stomp over WebSocket По сути брокер сробщени. Брокер получает сигналы отправляет их подписчикам (Глянь доку на редиску (Redis) все станет понятно.)

2.2 SocketIO. Тоже использует WebSocket в виде транспорта, он более гибок в настройках работает по суте как огрызок от сокета, просто более удобный.

2.3 MQTT over WebSocket Еще одна хорошая реализация от разработчиков Mosquitto (Eclipse), имеет место быть. Протокол MQTT создали IBM для простого и быстрого соеденения IoT устройств.