Javascript серверные события - PullRequest
1 голос
/ 08 июня 2009

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

Следующая часть - это то, что я пытаюсь сделать в javascript . Я уже сделал это во флэш-памяти с XMLSocket, так есть ли в javascript эквивалентная функциональность?

PS: Я нашел EventSource () здесь: http://dev.w3.org/html5/eventsource/, но я не уверен, реализован ли он браузерами.

Редактировать: В идеале он будет использоваться для таких вещей, как приложения для чата, где требуются события в реальном времени, поэтому использование вызовов ajax каждые X секунд будет слишком медленным. Почему W3C еще не добавил такой объект HTML 5, поскольку он кажется очень полезным.

Ответы [ 5 ]

3 голосов
/ 12 ноября 2010

Ситуация здесь немного изменилась.

Смотрите скриншот:

alt text

Все основные браузеры, кроме IE - включая Firefox, Webkit (т. Е. Chrome плюс Desktop / Mobile Safari) и Opera имели шанс реализовать HTML5 реализация push на стороне сервера .

Это отличная новость для разработчиков веб-приложений для iPhone / iPad / Android, но не столь значительная для остального мира, который все еще борется с плохой реализацией веб-стандартов IE6-8 и Firefox, играющим в догонялки.

В настоящее время ситуация такова, что если вам нужна поддержка кросс-браузера, то сервер Comet , описанный Дэном (или многократный опрос iFrame / xmlhttp), по-прежнему остается вашим лучшим вариантом.

2 голосов
/ 08 июня 2009

Возможно, вы захотите посмотреть Comet (обратный Ajax) для генерации отправленных сервером событий. Насколько я знаю, ни один браузер не реализует EventSource().

Ajaxian также имеет хорошую статью о комете , включая примеры, такие как GTalk.

Эту опцию можно считать «плохой», потому что она постоянно держит соединение с сервером, что может увеличить нагрузку.

Вы можете рассмотреть опрос, отправляя запрос Ajax каждые X секунд, чтобы проверить наличие обновлений. Как упоминалось в статье о Ajaxian, которую я включил, 37Signals опрашивает каждые 3 секунды для чата в реальном времени, и это, кажется, работает «достаточно хорошо» для них.

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

Один из способов сделать это - использовать мост сокета flash-javascript Есть несколько реализаций этого. Я использовал этот . Это очень быстро! Еще одно преимущество заключается в том, что вам не нужно менять сервер, чтобы он работал.

0 голосов
/ 07 сентября 2009

Flash-JavaScript? Как насчет Java-JavaScript (т.е. LiveConnect). Я создаю страницу прямо сейчас, где я использую скрытый Java-апплет (ширина и высота 1 пиксель того же цвета, что и фон), чтобы получить полный контроль над всеми хорошими низкоуровневыми соединениями с сокетами, а из апплета вызвать функцию JavaScript обновлять веб-страницу DOM / HTML при появлении новых данных. Java SDK бесплатен. Flash SDK отсутствует, последний раз, когда я пытался найти, где его скачать.

0 голосов
/ 08 июня 2009

Ну, у вас есть AJAX. Это не поддерживает открытое соединение (за исключением случаев keep-alive соединений, но js не может работать с ними как сокеты). Вы отправляете сообщение в кодировке XML на сервер от A, и B регулярно опрашивает сервер на наличие сообщений. Сервер должен хранить входящие сообщения для каждого клиента.

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