окно чата работает? это правильный путь?

#html #ajax #chat

#HTML #ajax #Чат

Вопрос:

Я хочу создать окно чата, и я нашел несколько фрагментов в Интернете, но они выглядят слишком большими для понимания. У меня есть базовый способ приблизиться к нему после прочтения всего этого:

  1. Создайте таблицу в mysql, содержащую столбцы, такие как имя пользователя, сообщение и отметка времени.
  2. Используйте AJAX и позвольте user1 отправлять сообщение в базу данных без обновления.
  3. Пусть user2 извлекает сообщение из базы данных.

Я новичок в AJAX и в веб-дизайне, честно говоря, я просто знаю, как получать данные и отправлять данные с помощью AJAX, но у меня вопрос: как мне обновить окно чата, когда какой-то пользователь что-то публикует?

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

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

Насколько нам известно, у нас много событий в JavaScript, пожалуйста, помогите мне с этим.

Я больше использую AJAX, это хорошая практика или плохая? Один из моих друзей сказал, что запуск приложения chatbox на веб-сайте стоит дороже, чем обычный веб-сайт, это правда? Если на веб-сайте есть приложение для чата, стоит ли оно дороже, даже если его трафик меньше?

Ответ №1:

Самый простой способ:

Чтобы обновить окно чата, вам нужно передать запрос на сервер (с помощью Ajax) и отправить полученные данные в некоторую текстовую область (например, с идентификатором «TextAreaId»):

 <script type="text/javascript">
function updateChat() {
             $.ajax({
                  url: "your_url",
                  type: "POST",
                  success: function (data) {
                       $("#TextAreaId").value = data;              
                  }
              });
}
</script>
  

Серверная сторона должна возвращать некоторое количество сообщений (например, последние 20).

Чтобы обновить окно чата с некоторым периодом, вы можете использовать:

 <body onload="setInterval('updateChat()', 1000)">
  

Чтобы опубликовать какое-либо сообщение, он должен:

 <script type="text/javascript">
function postMessage() {
             $.ajax({
                  url: "your_url",
                  type: "POST",
                  data: "message = "   Message   "amp;user = "   User, // pass message and user name
                  success: function (data) {
                       updateChat();   
                  }
              });
}
</script>
  

И обрабатывайте свои ajax-запросы на стороне сервера с помощью PHP или ASP.


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

Там вы можете найти механизм, который поможет вам получить ответ от сервера Ajax.Request

Здесь вы можете найти пример чата.

Вот самый простой пример, который я нахожу.

Ответ №2:

Вам нужен таймер

     this.ajaxError(function (event, request, settings) {
        //code to set timer
    });
  

Затем вам нужна функция jquery для извлечения всех сообщений с момента последнего обновления

         getMessages = function () {

        clearTimer();
        var postData = getPostData();
        postData.ChatMessage = '';

        $.post(url, postData, applyData, settings.dataType);
    }
  

Где postData — это переменные для lastupdated, идентификатор комнаты чата и т. Д.