Отправить информацию с сервера клиенту
Я ищу способ отправки информации с сервера клиенту, например, песни или изображения.
Объяснение: Я хочу отправить данные со своего сервера клиентам, которые загрузили приложение 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 могут использоваться для двунаправленной связи.