Как проще всего реализовать поведение, похожее на «серверный push» для веб-страницы? - PullRequest
4 голосов
/ 17 мая 2009

Я пытаюсь создать очень простой чат для 2 человек для моего сайта Django. Я учусь AJAX, чтобы сделать это. Мне нужны части веб-страницы для обновления без взаимодействия с пользователем:

  • Когда пользователь 1 отправляет сообщение, оно должно появиться на экране пользователя 2
  • Когда пользователь 1 выходит из системы, его статус должен измениться на «офлайн» на экране пользователя 2

Какой самый простой способ реализовать это? Это просто использовать JavaScript для опроса сервера на регулярной основе? Если это так, что является лучшей практикой для этого? Я нашел несколько решений об использовании setInterval или setTimeout, но не был уверен, что это лучший способ.

(Я читал об обратном AJAX, но из того, что я прочитал, его сложнее реализовать. Мне не нужно, чтобы мое решение было быстрым или масштабируемым; мне просто нужно, чтобы оно работало.)

Ответы [ 3 ]

3 голосов
/ 17 мая 2009

Поскольку вы сказали, что вас не волнует Комета , которая, по общему признанию, не очень легка для начала, setInterval поможет. Вы хотите быть умным об этом, все же. Вы, вероятно, должны начать с интервалом в 30 секунд. Если пользователь начинает общаться, ваш интервал должен упасть до 5. По мере того, как вы замечаете все меньше и меньше действий, ваш таймер должен снова уменьшиться до 30 секунд, и так далее. Он не получит никаких наград на соглашении о масштабируемости, но он сделает это для вашего среднего сайта среднего размера.

Чтобы узнать больше об этой технике, проверьте этот связанный вопрос .

2 голосов
/ 17 мая 2009

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

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

0 голосов
/ 11 февраля 2010

Еще один вариант, который вроде бы встречает вас на полпути: WebSync On-Demand (или любая другая размещенная кометная служба ... не уверен, что есть другие). Это позволит вам реализовать возможности проталкивания сервера, но работать с ним приятно и просто, поскольку все, что вам нужно сделать, - это включить клиент javascript.

...