Можно сделать HTTP-толчок на стороне клиента? - PullRequest
5 голосов
/ 27 июня 2009

В значительной степени противоположность серверной атаке, также известной как Comet . Мне интересно, можно ли использовать долгоживущие HTTP-соединения для передачи информации на сервер.

В отличие от простого XHR, соединение будет поддерживаться в рабочем состоянии, а данные будут передаваться на сервер через определенные промежутки времени, когда пользователь выполняет действия и т. Д.

Используя стандартные технологии, я не верю, что это возможно, но я открыт для предложений о возможных способах эксплуатации или гениальных способах достижения этой цели. Цель состоит в том, чтобы завершить отправку данных с низкой задержкой на сервер для быстрой и эффективной однонаправленной потоковой передачи.

Я не заинтересован в использовании реализаций сокетов с флеш / java-мостами из-за проблем, связанных с обслуживанием междоменных политик или подписанием java. Грубые взломы, которые работают без дополнительных зависимостей, приветствуются. Предпочтительно решение будет сделано с помощью JavaScript.

Ответы [ 4 ]

1 голос
/ 27 июня 2009

Я однажды видел разговор парня за http://orbited.org/

Это библиотека js, использующая стандартную технологию для поддержания открытого соединения между сервером и клиентом, которую вы можете протолкнуть.

1 голос
/ 09 марта 2011

это делает это: http://www.speich.net/projects/programming/firebug-testing.php

и посмотрите на это: http://en.wikipedia.org/wiki/Comet_(programming)) и гуглить вокруг 'x-mixed-replace'

Сделайте свой XHR на Firefox. Нужно использовать его напрямую или захватить объект XHR, чтобы установить забавные поля. xhr.multipart = true и использовать обработчик загрузки, а не onreadystatechange.

Сервер должен возвращать данные с типом mime 'multipart / x-mixed-replace'. плюс разделитель из нескольких частей. очистить, чтобы получить последние байты для каждого залпа. Я все еще пытаюсь сделать это гладко.

Safari (~ = chrome) может это сделать, но подробности разные. Вызывайте ваш обработчик, когда readyState = 3, а не 4. И каждый раз, когда новый текст добавляется к resultText, а не в одиночку. Не могу заставить что-либо работать в IE.

1 голос
/ 27 июня 2009

Это можно сделать одним из нескольких способов ...

Вы можете оставить соединение открытым и выполнить POST, или я уверен, что можно выполнить POST из нескольких частей.

0 голосов
/ 31 декабря 2012

Если вы ищете двунаправленную связь между браузером и сервером, вы, вероятно, ищете WebSockets . См. Внизу статьи в Википедии о доступных реализациях.

...