Могу ли я использовать Javascript для общения с сервером без XMLHttpRequest? - PullRequest
3 голосов
/ 18 октября 2010

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

Я искал другие сетевые функции, но не нашел ни одной, и мне сказали, что их нет.Этого почти достаточно, чтобы заставить меня перестать смотреть, за исключением того, что Gmail, кажется, делает это как-то.Он не делает запросов в течение нескольких минут, а затем, как только я отправляю электронное письмо самому себе, мой почтовый ящик в другом окне отправляет запрос POST и получает электронное письмо.Поскольку он не отправлял никаких http-запросов на сервер в течение нескольких минут (я проверил с помощью firebug), он не мог так разговаривать с сервером, так как он узнает, когда у него есть электронное письмо для получения?

Ответы [ 6 ]

2 голосов
/ 18 октября 2010

Я задал похожий вопрос некоторое время назад, посмотрите на него, есть довольно хорошие ответы.

Как мне запустить веб-сайт ajax push (activemq или cometd или что-то еще)?

1 голос
/ 18 октября 2010

Gmail использует вариант Кометы подходов. Я не уверен в специфике, но я полагаю, что это какой-то длинный опрос, выполняемый в тегах <script> или <iframe>. В статье Википедии о комете есть больше деталей.

0 голосов
/ 18 октября 2010

Вы можете рассмотреть WebSockets .

Преимущества:

  • намного меньше накладных расходов, чем HTTP (или AJAX / Comet)
  • Простота реализации на стороне клиента.
  • Тесно связан с HTML5, поэтому его использование дает вам «бонусные баллы». : -)

Недостатки:

  • Требуется браузер с поддержкой WebSockets или Adobe Flash: Проект web-socket-js предоставляет запасной эмулятор Flash.
  • Вам нужно что-то на стороне сервера, поддерживающее WebSockets.

Для серверной части проверьте pusherapp , которая обрабатывает серверную часть типа приложения, которое вы хотите создать. Вы получаете 5 клиентов одновременно и 10000 сообщений в день бесплатно.

Вот введение Google в WebSockets: http://blog.chromium.org/2009/12/web-sockets-now-available-in-google.html

Также проверьте wsproxy, который является WebSockets для универсального прокси TCP-сокета, включенного в noVNC (клиент HTML5 VNC). noVNC имеет версию wsproxy для C и Python. Отказ от ответственности: я создал noVNC.

0 голосов
/ 18 октября 2010

Они используют комету.Дальнейшее чтение -> http://www.ekhoury.com/blog/2007/02/07/ajax-alternatives-gmail-choice/

0 голосов
/ 18 октября 2010

GMAIL использует HTTP.Разница лишь в том, что они не делают опрос, но я считаю, что теги http-streaming.Он сохраняет соединение открытым, вместо того, чтобы закрывать его и повторять попытки.

Вы не указали, какую архитектуру сервера вы используете, но вы также можете использовать BOSH (например, просодия имеет BOSH) для достижения этой цели. Strophe.js - это действительно чистая библиотека javascript для достижения этой цели.

0 голосов
/ 18 октября 2010

Комета возможно? http://en.wikipedia.org/wiki/Comet_(programming))

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...