окно чата работает? это правильный путь? - PullRequest
3 голосов
/ 17 октября 2011

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

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

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

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

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

У нас естьнасколько нам известно, о многих событиях в JavaScript, помогите мне с этим.

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

Ответы [ 2 ]

2 голосов
/ 17 октября 2011

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

Чтобы обновить окно чата, вы должны передать запрос на сервер (с 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 + "&user = " + User, // pass message and user name
                  success: function (data) {
                       updateChat();   
                  }
              });
}
</script>

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


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

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

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

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

1 голос
/ 17 октября 2011

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

    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 - переменные для последнего обновления, идентификатор чата,и т.д.

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