Подтвердить что ты не робот

Есть ли реальный серверный толчок по http?

Я знаю, что есть способы подделать его, опросить (или длительный опрос), но есть ли способ связать сервер с браузером для вывода информации?

Любой параметр опроса тратит ресурсы на сервере и в зависимости от сервера может заблокировать его (например, apache и iis).

Похоже, что многие сайты используют длинный опрос, чтобы подделать механизм push-сервера на стороне сервера. Не лучше ли было бы иметь настоящий протокол push, встроенный в браузер?

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

4b9b3361

Ответ 1

Я знаю, что есть способы подделать его, опросить (или длительный опрос), но есть ли способ связать сервер с браузером для вывода информации?

Соединение должно быть сначала установлено клиентом на сервер. Нет способа подключения к веб-клиенту сервера.

Любой параметр опроса тратит ресурсы на сервере и в зависимости от сервера может заблокировать его (например, apache и iis).

Это правильно. Частые опросы неэффективны, что является одной из причин, по которым мы переходим в мир тонов с постоянными связями. WebSockets будет лучшим решением для этого. Я работаю над Pusher, размещенным в реальном времени решением для WebSocket, и мы увидели массовое понимание этой технологии, которая ведется сообществом, которое считает это лучшее решение проблемы с ресурсами и в режиме реального времени.

Похоже, что многие сайты используют длинный опрос, чтобы подделать механизм push-сервера на стороне сервера. Не лучше ли было бы иметь настоящий протокол push, встроенный в браузер?

Да, поэтому у нас теперь есть WebSockets. HTTP-решения для веб-браузеров в конечном итоге являются взломом и не работают последовательно (одинаково) между браузерами.

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

  • Долгосрочный HTTP-протокол. Соединение открыто, пока у сервера не появится новая информация. Примечание: это отличается от стандартного опроса, где запросы на новую информацию могут быть полной потерей времени.
  • Потоковая передача HTTP. Это, вероятно, решение, которое вы ищете (отвечая на вопрос HTTP). Используя этот метод, соединение открыто, и новые данные могут быть переброшены через существующее соединение, от сервера к клиенту, без закрытия соединения и повторного открытия, так как он связан с HTTP-протоколом Long-Polling.
  • HTTP/2 Server Push. Еще один стандартизованный механизм перехода от сервера к клиенту. Они известны как "нажатые ответы", и браузер может их кэшировать.
  • WebSockets. Полная двунаправленная и полнодуплексная связь по одному TCP-соединению в веб-браузере (или любом веб-клиенте).

Связанная информация и ресурсы:

  • Вы можете думать о событиях Server-Sent (API EventSource) в качестве стандартизации HTTP-потокового HTTP и HTTP-потоков.
  • HTTP/2 Server Push

Ответ 2

Um, no.

Ваш браузер не прослушивает входящие подключения.

И вы не хотите, чтобы это было возможно. У нас достаточно эксплойтов, как есть.

Ответ 3

Если вы используете технологию RIA, такую ​​как Adobe Flex, я считаю, что версия Flex "push-server" (передача сообщений AMF) будет соответствовать вашему определению нажатия на сервер.

Конечно, вы также можете использовать примитивный метод опроса ajax-y (hacky), но нет причин, за исключением случаев, когда вы вынуждены.

Ответ 4

Вам не нужно "подделывать" что угодно. Flash имеет очень хороший и хорошо сфокусированный объект Socket, который работает блестяще, и вы можете написать небольшое приложение Flash, которое говорит на веб-странице, поэтому вам не нужно ничего делать во Flash, кроме связи с сервером (если вы хотите создать страницу в HTML). Разумеется, вам понадобится прослушиватель сокетов на стороне сервера, но их тоже легко сбрасывать. Много документации в режиме онлайн для того, как реализовать все это. Вот первый пример, который я нашел (не смотрел слишком внимательно, но похоже, что он будет работать красиво). http://www.giantflyingsaucer.com/blog/?p=205

Ответ 5

Я бы подумал, что WebSockets (см. http://en.m.wikipedia.org/wiki/WebSocket) является реальным нажатием, поэтому ответ будет: это зависит от браузера. Если вам нужна широкая совместимость, лучше всего вы можете сделать сегодня - библиотеки JavaScript, которые будут выбирать лучший доступный протокол для браузера, в котором он работает (например, https://github.com/ffdead/jquery-graceful-websocket). Но вы хотели, чтобы сервер был дружественным, и поддержка нескольких протоколов не является серверной. Современное состояние дел заключается в том, что делать классные вещи, которые работают в разных браузерах, являются инженерно-интенсивными.

Ответ 6

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

Но если вы ищете чистое решение для push notificatinons, посмотрите Server-Sent Events. Он является обычным HTTP и работает с большинством браузеров, поддерживающих HTTP 1.1.

SSE работает только в одном направлении (сервер → клиент), который является основным механиком для push-уведомлений. Для клиент- > серверной связи вы всегда можете использовать Ajax. Я сделал обобщение этого в Какая технология для связи в реальном времени для веб-приложения?

Ответ 7

Может быть, технология продвинулась с того времени, когда был задан вопрос... Я наткнулся на это, ища что-то еще.

WebPush доступен в большинстве браузеров, и есть несколько поставщиков Push Notification, которые отправляют информацию с сервера в браузер. Помимо нескольких браузеров, таких как Safari, можно разработать обработчики, которые можно вызвать, когда уведомление поступит и выполните некоторые действия в браузере на стороне клиента.