Мой клиент для чата на базе Flash недостаточно надежен? Какой еще путь есть? - PullRequest
0 голосов
/ 03 марта 2010

Я разработал чат-клиент на основе Flash, который отображает сообщения, отправленные пользователями, принадлежащими к группе, вместе с их именем пользователя и временем написания. Данные хранятся в базе данных mysql с идентификатором группы, идентификатором пользователя и сообщением, так что они сохраняются за пределами сеансов чата и позволяют пользователям войти в систему позднее, чтобы увидеть обсуждения, меньше чата, больше доски объявлений. Когда пользователь пишет сообщение, я хочу, чтобы клиенты чата мгновенно обновляли его, чтобы он выглядел как чат в реальном времени. Мое решение до сих пор заключалось в том, чтобы включить интервал в мой флэш-код, который вызывает страницу PHP, которая запрашивает в базе данных новые комментарии и возвращает его во Flash.

Я думаю, из того, что я читал, этот подход называется длинным опросом? это правильно? Это достаточно надежно для объема? Буду ли я лучше смотреть на передачу данных клиенту, когда есть изменения? Как я могу обнаружить эти изменения? Я смотрел на APE, например, но я не думаю, что это хранит сообщения в базе данных.

Есть предложения?

Ответы [ 2 ]

2 голосов
/ 03 марта 2010

Недостаток опроса в том, что он может очень быстро стать дорогим.

предположим, у вас есть 10000 пользователей в сети, которые хотят, чтобы задержка чата была не больше 1 секунды. Тогда вы будете бомбардировать ваш сервер со скоростью 10000 запросов в секунду.

для небольших вещей или вещей, которые не нуждаются в обновлении, опрос является хорошим подходом, так как он прост и не может пойти не так.

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

кроме этого, вы можете использовать APE или SmartFox, или Red5 или много разных вещей для создания постоянного сервера ретрансляции, то есть сервера, который имеет постоянные подключения ко всем клиентам и уведомляет их о любых изменениях (например, о новых сообщениях) .

как всегда, мой личный совет - использовать Haxe . Вы можете использовать руководство по чату , чтобы начать. У Haxe довольно крутая кривая обучения, но я думаю, что это того стоит. Я счастлив, что оставил позади и ActionScript, и PHP.

edit: то, что вы описываете, не длинный опрос . Кроме того, вы вряд ли сможете проводить длительные опросы с PHP, по крайней мере, если классически использовать с Apache. Apache создаст определенное количество процессов PHP. Каждый раз, когда приходит запрос, он ищет бесплатный процесс PHP и позволяет ему обработать запрос. Когда процесс PHP завершен, он отправляет ответ клиенту. Если нет доступных свободных процессов, он будет буферизовать запрос, пока процесс не станет доступным. Таким образом, вы можете полностью заблокировать весь сервер, если попытаетесь выполнить длинный опрос с помощью PHP классическим способом.

1 голос
/ 03 марта 2010

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

Это должно быть более эффективным, чем просто опрос, потому что если вы думаете о сценарии с низким трафиком, то при опросе вы будете выбивать сервер изо всех сил - таким образом, вы генерируете трафик только при наличии причина ...

Когда вы вводите комментарий, ваш клиент может уведомить это приложение напрямую (через веб-сервис) об изменении, и это вспомогательное приложение может затем обновить базу данных ...

Надо сказать, хотя я не эксперт по программам чата - никогда не участвовал ни в одном из них ...

...