Чат на основе AJAX - PullRequest
       13

Чат на основе AJAX

1 голос
/ 16 февраля 2010

Я разработал чат на основе AJAX для удовлетворения моего приложения

Вот что я делаю в чате

  1. Существуют различные чаты, и пользователь может щелкнуть по любому чату, чтобы начать общение
  2. Пользователь входит в систему и может быть частью только одного чата одновременно

Я сохраняю данные чата (состояние чата в базе данных в формате XML выглядит следующим образом)

<ChatRoom roomid="<roomid>">
      <Users>
           <User uid="<uid>" username="<username>" color="" heartbeat="">
           <User uid="<uid>" username="<username>" color="" heartbeat="">
           <User uid="<uid>" username="<username>" color="" heartbeat="">
      </Users>
      <Messages>
           <Message id="" from="<username>">This is message text</Message>
           <Message id="" from="<username>">This is message text</Message>
           <Message id="" from="<username>">This is message text</Message>
      </Messages>
</ChatRoom>

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

теперь я создаю AJAX-запрос и отправляю запрос каждые несколько секунд ... запрос в основном отправляет lastMessageID, известный пользователю ... если есть что-то новое в чат-комнату после этого идентификатора сообщения (идентификаторы сообщения увеличиваются каждый раз при новое сообщение добавлено в чат-комнату ... а также у меня есть возможность обернуть, чтобы ограничить максимальное количество сообщений == 100)

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

Надеюсь, это немного прояснит картину

Мои вопросы:

  1. с точки зрения дизайна ... как дизайн
  2. где я могу сделать улучшения
  3. для того, чтобы чат реагировал. Я обнаружил, что мне нужно проверять наличие новых сообщений каждые 2 секунды ... что может привести к ненужной загрузке запроса на сервере
  4. это механизм опроса ... есть ли механизм уведомления ... как клиент, устанавливающий обратный вызов ... и сервер отвечает на обратный вызов всякий раз, когда появляется что-то новое

какие-либо комментарии относительно моего подхода и как я делаю вещи?

Я хотел бы ответить на любые вопросы и обсудить детали с вами, ребята

Большое спасибо за ваше время !!

1 Ответ

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

Хранение данных в XML в база данных кажется излишней, используйте либо плоский XML (или JSON!) Файл, либо просто таблицу базы данных, но, вероятно, не оба. Вы можете использовать длинный опрос / Comet для работы с обратными вызовами / облегчить нагрузку на ваш сервер после опроса. В противном случае выглядит вменяемым.

Смотрите здесь, например: http://en.wikipedia.org/wiki/Comet_%28programming%29

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...