2009-08-02 6 views
34

Просто любопытно. Как работает чат в браузере? Обычно, если пользователь переходит на веб-страницу, его веб-браузер запрашивает содержимое страницы. Сервер производит вывод и отправляет его на компьютер пользователя. Но в чате это немного наоборот (ну не совсем). Это не пользователь, запрашивающий сообщение чата с какого-либо сервера, а скорее сервер, который отправляет его напрямую. Теперь этого очень просто добиться с помощью «нормального» сервера, но то, что сервер отправляет в браузер, меня смущает. Публикация части сообщения понятна, это просто. Вы просто отправляете данные на сервер, например, ajax или что-то в этом роде. Но как другой компьютер мгновенно «знает», что сообщение было написано? Очевидно, что сервер должен отправить его на другой компьютер, как только он будет написан. Но почему-то это не вычисляется в моем мозгу. В моем мозгу браузер только запрашивает вещи, он не просто получает их. Как именно вы это делаете?Как работает браузер в браузере?

Возьмите google talk в gmail, например. Как это работает? Как это реализовано?

ответ

11

Есть push technologies, такие как Comet, но они не широко внедрены. Большую часть времени это выполняется через polling с небольшим интервалом с AJAX и загрузкой любых новых сообщений, доступных со времени последнего загруженного сообщения.

+0

Это делает смысл, и именно так я думал, что это сработало. AJAX запрашивает с небольшими интервалами. Однако, изучая, как работает google talk (с firebug), я увидел, что когда друг набрал мне сообщения, мой компьютер не делал никаких запросов, и все же сообщение было отображено. – quano

+0

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

+0

Используют ли они серверные события? –

2

Он использует AJAX - на стороне клиента Javascript работает в браузере пользователя в Gmail отправляет и получает сообщения от сервера Google, и записывает их в окне браузера - не перегрузите требуется страница.

4

Orbited - это хороший способ реализовать это, он использует методологии комет. Вы можете найти учебник here.

Кто-то упомянул опрос ajax, но comet is always better than polling. Ну, это просто сенсационный титул, но комета определенно более уместна и может привести к меньшему стрессу на стороне сервера, с правильным фоном.

1

У меня есть браузерный чат, подобный технологии чата facebook (http://chatsign.com). Это не технология push, а что-то лучше, чем опрос, его зов ajax длинный опрос.

Для получения дополнительной информации о АЯКС длительного опроса вы можете сделать некоторые исследования, или посетите: http://techoctave.com/c7/posts/60-simple-long-polling-example-with-javascript-and-jquery

0

Современные приложения чата используют (Sent Events Сервер: особенность html5) SSE для отправки новых сообщений в браузерах

+0

это не отвечает на то, как он работает и реализован. –

 Смежные вопросы

  • Нет связанных вопросов^_^