2010-08-24 3 views
1

Как делается попытка вызвать сайт для изменения контента с серверной стороны? Пусть этот пример - чат Gmail или чат на facebook. Или даже новый знак сообщения о переполнении стека.Функциональность сообщения на стороне клиента

Это делается по http://en.wikipedia.org/wiki/Comet_(programming))?

Спасибо за помощь

+0

Простите, это невозможно. –

+0

Сначала вам нужно придумать спецификацию без этого «чего-то», тогда это просто счастливый взлом. Эрр, я имею в виду, не могли бы вы быть более конкретными в отношении ваших требований? Какая база данных? Кто имеет базу данных? Как кто-то отправит вам сообщения? –

+0

@Dave Swersky: он спрашивает: «Как веб-страница может представить иллюзию, что она получает незатребованные сообщения?» – egrunin

ответ

4

Такого рода вещи, как правило, делается с блоком JavaScript снова и снова стрелять в соответствии с таймером. Он будет проверять состояние вещей в базе данных и корректировать что-то в разметке. Например, измените класс CSS какого-либо элемента, чтобы ввести другой цвет или полужирный шрифт, замените изображение тем, что сделано в ярком цвете и т. Д. Довольно просто. Никакой магии не было.

+0

Это все? Разве это не активное ожидание? Мне не нравится эта идея:/ – gruber

+0

Да, вот и все. Ничего больше. Попробуйте отключить JavaScript для любого сайта с этой функцией, которую вы имеете в виду, и вы увидите, что их уведомления перестают работать. – 2010-08-24 13:56:49

+1

@snorlaks: нет никакого другого способа опроса данных javascript, чтобы ответить на ваш вопрос, слишком плохо, если вам не нравится идея! –

0

Клиентская сторона должна «опросить» сервер для внесения изменений. то есть вызов Ajax на основе таймера, который проверяет сервер каждые 15 секунд для новых данных и принимает действие на основе результата.

очень рыхлый пример:

setTimeout('checkMessages()',15000); 

function checkMessages() { 
    //using jquery 
    $.get(.......... , function (data) { if (data == "newmsg") { $('#newmsgind').blink(); }); 
    setTimeout('checkMessages()',15000); 
} 

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

+0

Так, на ваш взгляд, например, google chat на gmail сделан так? – gruber

+0

Я уверен, что реализация намного более надежна и развита, но да. – Fosco

+0

его неправда, что клиентская шляпа для опроса: смотри это: http://en.wikipedia.org/wiki/Comet_(programming) – gruber

0

Если вы действительно не нравится подход javascript, вы можете написать Java-апплет, который работает так, как вам кажется, предпочитая, поддерживая открытое соединение с сервером. Но это тяжелое решение для того, что обычно является легкой проблемой.

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