2012-02-21 3 views
3

Недавно я столкнулся с такой необходимостью. Клиент (веб-браузер) требует, чтобы задача выполнялась асинхронно на стороне сервера, а затем клиент оставил ее.Как отправить сообщение с сервера клиенту в веб-приложении

Когда сервер завершит задачу, он уведомит клиента, отправив сообщение.

Итак, мой вопрос:

Есть ли способ, чтобы отправить сообщение (простой текст, JSON и т.д.) со стороны сервера к клиенту инициативен?

+1

Что вы пытаетесь сделать? Какой-то сценарий был бы полезен. Какие инструменты для серверов и клиентов вы используете? Например. PHP (сервер) и Javascript (клиент). Или это что-то другое (например, Java, C, ...). Короткий ответ: Да, возможно. Более подробный ответ требует некоторой дополнительной информации :). – ale

ответ

7

Off верхней части моей головы, два возможно Решения приходят на ум:

Первым, наиболее распространенным (и самым безопасным) решением для этого, вероятно, будет длинный опрос AJAX, то есть настройка запроса ajax на клиенте, чтобы периодически делать запрос и что-то делать с ответ. Например, настройка ресурса, который возвращает ваше «завершенное» сообщение, когда обработка на стороне сервера завершена. Это не идеально, учитывая ваш вопрос, но это, безусловно, возможно и довольно надежно.

Чтобы использовать технологию push (это именно то, что вы просите, но не обязательно то, что вам действительно нужно), вы должны взглянуть на WebSockets. Если вы посмотрите на эту ссылку, вы увидите в тексте статьи список браузеров, поддерживающих технологию, и в зависимости от вашего варианта использования вы можете или не захотите исследовать дальше.

Я лично имею дело с большим количеством старых браузеров, поэтому опрос ajax будет моим делом к ​​парню. Предполагая, что это полудлиний процесс, опрос каждые 2-5 секунд не должен слишком сильно огорчать ваших пользователей. Это не будет хорошо для чатов в реальном времени или чего-то еще, но для «Я проанализировал ваш файл Excel 200», все должно быть хорошо.

+1

Просто поясните, если ваш пример означает, что пользователь фактически * оставляет * страницу, которая будет опроса (т. Е. Закрывает браузер, переходит на другой сайт и т. Д.). Я не могу думать о том, чтобы сохранить это соединение. Если это ваш пример, следует, вероятно, рассмотреть альтернативную систему уведомлений. (возможно, электронная почта) – jholder

-2

Есть так много методов, доступных как использование ф виртуального SMTP любого сервер обмена и другой сервер электронной почты, как Yahoo, Google проверить это link может помочь вам в этом отношении

Смежные вопросы