Я разработал чат на основе AJAX для удовлетворения моего приложения
Вот что я делаю в чате
- Существуют различные чаты, и пользователь может щелкнуть по любому чату, чтобы начать общение
- Пользователь входит в систему и может быть частью только одного чата одновременно
Я сохраняю данные чата (состояние чата в базе данных в формате 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, который ему известен
Надеюсь, это немного прояснит картину
Мои вопросы:
- с точки зрения дизайна ... как дизайн
- где я могу сделать улучшения
- для того, чтобы чат реагировал. Я обнаружил, что мне нужно проверять наличие новых сообщений каждые 2 секунды ... что может привести к ненужной загрузке запроса на сервере
- это механизм опроса ... есть ли механизм уведомления ... как клиент, устанавливающий обратный вызов ... и сервер отвечает на обратный вызов всякий раз, когда появляется что-то новое
какие-либо комментарии относительно моего подхода и как я делаю вещи?
Я хотел бы ответить на любые вопросы и обсудить детали с вами, ребята
Большое спасибо за ваше время !!