2009-06-26 4 views
5

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

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

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

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

+0

Для этого нет большой причины. Поскольку HTTP1.1 повторно использует соединения, после установления первого соединения последующие соединения выполняются невероятно быстро; стандартные методы AJAX решают эту проблему без каких-либо проблем, связанных с поддержанием долгоживущих соединений на сервере, устранением сбоев в подключении и т. д. – jvenema

ответ

1

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

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

+0

Определенно в соответствии с тем, что я ищу, хотя было бы намного лучше, если бы он работал над стандартным портом 80. –

+0

Это абстрактное соединение, тем не менее, это может привести к использованию нескольких HTTP-запросов (по одному на сообщение). Но его можно запустить на порт 80 (просто нет, конечно, на том же IP-адресе, что и веб-сервер). – Miles

1

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

Вы можете keep a connection open и сделать Пост, или я уверен, что это можно сделать из нескольких частей POST а.

+0

Нет, определенно, не то же самое. –

+0

Вопрос заключается в отправке некоторых данных, а затем отправка некоторых данных без ввода нового HTTP-запроса - т.е. а не только обычные POST. –

+0

вы можете сохранить соединение открытым, хотя, возможно ли выполнить многочастный запрос GET? Любой из этих двух сценариев будет работать нормально. – Nippysaurus

1

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

и посмотреть на это: http://en.wikipedia.org/wiki/Comet_(programming)) и Google вокруг 'х-смешанных заменить'

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

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

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

0

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

+0

Спасибо :) Это было 3 года назад, сокеты были не так далеко, как сегодня, как сегодня. –