2013-10-11 4 views
0

В настоящее время я делаю чат-приложение, где только чат администратора и пользователей, без чата пользователя. Дизайн: каждый чат хранится в базе данных, и каждый 2-секундный пользователь и администратор делают запрос AJAX (в php-файл), чтобы узнать, есть ли новый диалог чата, и если есть, потяните данные в текстовое поле. Все кажется нормальным и работает хорошо.Лучший способ сделать чат-приложение?

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

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

+3

JSON - это формат сериализации, он не сможет исправить латентность. Посмотрите на _long polling_. – Halcyon

+1

Я не уверен, почему кто-то мог подумать, что JSON может решить эту проблему с производительностью. Я также не полностью понимаю, почему 5 сеансов чата вызывают проблему. Я думаю, вам нужно точно определить **, где проблема **, прежде чем пытаться что-либо изменить. 5 потоков, отправляющих запросы db каждые 2 секунды, НЕ должны быть проблемой с производительностью, если ваши запросы и структуры данных не подтянуты. – NotMe

+0

Посмотрите на: http://stackoverflow.com/questions/8915819/building-a-chat-system-with-javascript –

ответ

0

Вы должны сменить выход APSA AJAX на JSON. (например, вы можете использовать функцию json_encode php). И вы должны проанализировать (eval) это в javascript.

Я немного скептически. Он считает, что это может снизить использование сети более чем на 50%.

0

Возможно, вы можете попробовать очередь сообщений, например 0mq или rabbitmq. Существует множество примеров чатов.

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