2009-04-14 4 views
2

Я сделал чат, с которым я могу связаться с Telnet. Мой чат в настоящее время реализован как Twisted TCP Server. Как преобразовать его в чат для браузера?Сделать чат с twisted

Я полагаю, что я должен использовать кометный сервер (например, Orbited), чтобы одновременно обслуживать статический HTML и динамический контент. Является ли такой кометный сервер необходимым для быстрого и надежного общения?

ответ

1

Comet - лучший вариант, не используя ничего особенного (например, Flash, см. Ниже). Это проверенная технология и используется многими крупными сайтами, такими как чат Gmail и чат Facebook.

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

Если вы решили опросить, вы всегда можете создать систему «отступить». Например, страница проверяет каждые 2 секунды, чтобы увидеть, есть ли какие-либо сообщения в чате. Он делает это 5 раз, и если нет ничего, это увеличивает задержку до 3 секунд. Он делает это 5 раз, и после ничего он идет до 4 секунд. Когда отправляется сообщение чата, он возвращается к самой короткой задержке.

Еще один вариант, который считается лучшим, - это использовать клиент Flex или Flash. Таким образом, вы можете просто использовать сокеты TCP, которые только отправляют данные, если они есть. Но это только, если вы действительно хотите использовать приложение Flash на своем сайте.

+0

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

+0

Вам все равно нужно сделать запрос с Comet, но то, что технология - это в основном очень длинный опрос. Ваша веб-страница будет запрашивать страницу PHP, но этот запрос PHP останется открытым до тех пор, пока на сервере не будет данных для отправки. Этот «длинный опрос» может длиться минуты (в отличие от обычного опроса ... (продолжение) – ryeguy

+0

... который быстро проверяет и возвращает, если нечего отправлять). Вы можете увидеть пример этого на http://www.zeitoun.net/articles/comet_and_php/start. И да, если вы выбираете TCP со вспышкой, вы можете использовать Telnet, поскольку Telnet также работает на TCP. Однако вам придется использовать текстовый протокол – ryeguy

0

Да, это так! Проверьте www.meebo.com! Они используют комет в качестве основной платформы!