Лучший способ показать "живые" комментарии - PullRequest
1 голос
/ 03 декабря 2010

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

Он ведет себя очень похоже на окно чата, в котором несколько пользователей делают комментарии, хотя я этого не делаю.ожидайте, что он будет таким же активным, как и один (я ожидаю, что он будет примерно так же периодически обновляться, как стена на Facebook)

Я рассмотрел: - jQuery + AJAX + Timer?
- Веб-сокеты.Готовы ли веб-сокеты в прайм-тайм?И можно ли реализовать веб-сокеты с ASP.NET + IIS?

Я ищу решение, которое будет элегантным, чистым, быстрым (низкая пропускная способность; по возможности загружайте только новые комментарии, удаляя старые)) и не такая уж и эзотерическая на платформе ASP.NET/IIS ... не знаю, как это сделать, любезно обращаюсь к вам за помощью.

Спасибо!

PS Я попытался выполнить поиск в "системе комментариев", "показать новые записи", "системах чата", но не смог найти результаты, которые искал.

Ответы [ 2 ]

1 голос
/ 03 декабря 2010

У кого-то еще может быть лучший пример, но я играл с веб-приложением чата AJAX. Вот что я сделал, используя ASP.net и JQuery.

<script type="text/javascript">
    $(document).ready(function () {
        $("#btnSend").click(function () {
            addMessage();
        });
        return false;
    });

    function refreshChat() {
        $.get("messages.aspx", function (data) {
            $("#chatbox").empty();
            $("#chatbox").prepend(data);
            var $t = $("#chatbox"); //whatever the selector you use.
            $t.animate({ scrollTop: $t.attr("scrollHeight") }, 3000);
        });

        setTimeout(refreshChat, 5000);
    }

    function addMessage() {
        $.get("messages.aspx", { usr: $("#usr").val(), msg: $("#msg").val() });
        $("#msg").val('');
        $("#msg").focus();
    }
</script>

HTML:

<div id="input">
    username:
    <input type="text" name="usr" id="usr" /><br />
    message:
    <textarea rows="3" id="msg" name="msg"></textarea>
    <br />
    <input type="button" id="btnSend" name="btnSend" value="Send" />
</div>
<div id="chatbox" style="height: 300px; overflow: scroll;">
</div>

Используйте message.aspx для записи новых сообщений в базу данных и запроса новых записей для добавления в MSG Div.

0 голосов
/ 03 декабря 2010

Попробуйте это

var interval=2; // on page load

синхронизация ajax с сервером каждые 2 секунды и при mouse || keyboard интервале сброса события до 2, а каждые 10 вызовов ajax увеличивают интервал обновления на 1 секунду. Таким образом, вы можете контролировать нагрузку на сервер. и сэкономит пропускную способность для клиента и сервера.

Эти значения могут быть скорректированы в соответствии с вашими потребностями

...