Написание приложения для чата
Мне интересно, как правильно закодировать приложение чата для тысяч пользователей.
Я просто смущен, как я могу выполнить ping-сервер с помощью AJAX каждую секунду или, возможно, меньше, и проверить, есть ли новые записи в MySQL и т. Д. С допустимым количеством загрузки серверов.
В настоящее время я думаю о кодировании с помощью jQuery, PHP и MySQL.
Пожалуйста посоветуй. Ваша помощь будет принята с благодарностью.
Сторона клиента
Для любой программы, которая должна опросить сервер, я бы рекомендовал WebSockets .
Я написал чрезвычайно простой учебник по WebSocket . Я также использовал код web-socket-js для реализации FlashSocket, который заставит его работать в Firefox, IE 8+ и Chrome, а также в любом браузере, поддерживающем WebSockets.
Я не верю, что опрос был бы хорошим выбором для чата. Хотя это сработает, служебные данные запроса будут намного выше, чем использование WebSocket. Компромисс (преимущество) заключается в том, что его поддерживает больше браузеров.
Кроме того, попадание базы данных MySQL, чтобы увидеть, есть ли сообщения, будет нести большую часть издержек БД. Я бы рекомендовал использовать базу данных MySQL для журналов чата и поддерживать только небольшое количество «обратных» сообщений для новых подключений. Затем просто передавайте новые сообщения всем подключенным клиентам. Приложение frontend затем примет сообщение и добавит его в окно чата.
Серверная сторона
Node.js – это созданная на стороне сервера инфраструктура JavaScript. Пока он еще молод, в нем закодировано несколько очень интересных приложений. Пользователи Node.js настраивают программу чата (а не WebSockets), источник которой был доступен . Это было бы очень хорошим местом для начала, если вы не захотели написать его с нуля.
Существует реализация PHP WebSocket . В зависимости от ваших требований его можно использовать просто отлично. Будучи закодированным как в Node.js, так и в PHP, я бы сказал, что Node.js лучше подходит для этого.
На стороне сервера вам понадобится сценарий, который может определить, есть ли новый контент (например: сообщения) на основе метки времени (например: последний запрос). На стороне клиента у вас есть два варианта:
Опрос aka Периодическое обновление :
Это в основном означает, что ваш клиент периодически опросает сервер, чтобы проверить, есть ли новые данные. Вы хотите, чтобы ваши запросы и ответы были максимально легкими. Это также может помочь, если запустить сценарий, обрабатывающий эти запросы в отдельном процессе.
Вам будет необходимо настроить интервал на тот, который подходит как для сервера, так и для пользователя. Вы также можете использовать Heartbeat, чтобы узнать, активен или нет пользователь, поэтому вы можете остановить опрос сервера, если пользователь оставил окно открытым, но отключен от компьютера.
HTTP Streaming aka «Comet» :
Для этого потребуется еще одна настройка; но это, в основном, долговременное соединение от клиента к серверу, и сервер может «подталкивать» контент клиенту, когда это необходимо.
Вот простой пример веб- сайтов: http://www.dashdashverbose.com/2010/02/nodejs-websockets-stoopid-easy-comet.html Я предполагаю, что ваше максимальное количество пользователей будет зависеть в основном от вашего соединения и программного обеспечения сервера.
Вы также можете попробовать IcePush – это ajax framework для push- сообщений FROM сервера К клиенту javascript. Это было бы идеальным сочетанием для chatclient!
Если вы разработчик java, вы можете использовать jwebsocket для реализации сервера. на их сайте есть разные примеры, так как я также переживаю некоторые из них.
Кратко с их сайта
jWebSocket предоставляется вам для создания инновационных потоковых и коммуникационных приложений на базе HTML5 в Интернете. HTML5 WebSockets заменит существующие подходы XHR, а также сервисы Comet новой гибкой и сверхвысокой двунаправленной технологией связи сокетов TCP. jWebSocket – это реализация Java и JavaScript с открытым исходным кодом для протокола HTML5 WebSocket с огромным набором расширений.