Отправить информацию с сервера клиенту

Я ищу способ отправки информации с сервера клиенту, например, песни или изображения.

Объяснение: Я хочу отправить данные со своего сервера клиентам, которые загрузили приложение HTML5.

Но я не знаю как. Я знаю, что могу отправить запрос php от клиента на сервер и ответить позже, но как я могу отправить что-то с сервера без запроса клиента?

Благодарю.

2 ответа

Добавление к ответу Jokeyrhyme...

Вы хотите асинхронно отправлять данные с сервера на клиент. Это означает, что клиент не знает, когда ожидать данные. С практической точки зрения, в современной сети у вас есть следующие варианты:

  • Некоторая форма опроса, длинный опрос, комета и т. Д.
  • WebSocket

Первый вариант более понятен, так как эти методы существуют уже давно.

WebSocket новее, но является лучшим решением, так как он облегчает проблемы, которые мешают методам на основе HTTP, с опросом, длительным опросом и т. Д. Для небольшого приложения или приложения, которое опрашивается редко, вы можете обойтись без опроса. Но когда вы хотите масштабировать, эти решения сталкиваются с проблемами.

Я не стал бы беспокоиться о SSE (Server-Sent Events), поскольку это в значительной степени подмножество WebSocket. Любой, кто рассматривает SSE, обычно заканчивает тем, что просто использует WebSocket, так как это примерно тот же объем работы, и он дает вам больше (например, двустороннее взаимодействие).

Однако WebSocket не заменяет HTTP; приложение может использовать оба одновременно. Используйте правильный инструмент для правильной работы.

В вашем случае, есть клиент с подключением WebSocket. Тогда ваше бэкэнд-приложение может в любое время (асинхронно) уведомлять клиента о том, что нужно что-то делать (например, доступна новая песня или изображение, как вы сказали в своем исходном сообщении).

Я бы не стал отправлять песню или изображение через соединение WebSocket, хотя вы могли бы. Вместо этого клиент может извлечь песню или изображение, используя традиционные методы HTTP, которые хорошо понятны и хорошо справляются со статическим контентом. Например, вы можете воспользоваться кэшированием, если несколько человек загружают один и тот же файл (песню или изображение).

Поэтому отправьте клиенту идентификатор или URL-адрес песни / изображения, которые будут загружены через WebSocket. Затем загрузите песню / изображение через HTTP.

Это пример использования как HTTP, так и WebSocket для их сильных сторон. WebSocket для эффективного асинхронного взаимодействия практически без использования полосы пропускания и HTTP для эффективной выборки статических ресурсов.

Вы можете попробовать отправленные сервером события или WebSockets:

Эти технологии позволяют клиентскому веб-приложению оставаться открытым для связи с сервером в любое время. Отправляемые сервером события являются исключительно сервер-клиентскими, в то время как WebSockets могут использоваться для двунаправленной связи.

Другие вопросы по тегам