Клиентское уведомление, я должен использовать Нажатие Ajax или Опрос?

Исключение нулевого указателя - это индикатор того, что вы используете объект, не инициализируя его.

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

public class Student {

    private int id;

    public int getId() {
        return this.id;
    }

    public setId(int newId) {
        this.id = newId;
    }
}

Приведенный ниже код дает вам исключение с нулевым указателем.

public class School {

    Student obj_Student;

    public School() {
        try {
            obj_Student.getId();
        }
        catch(Exception e) {
            System.out.println("Null Pointer ");
        }
    }
}

Поскольку вы используете Obj_Student, но вы забыли инициализировать его, как в правильном коде, показанном ниже:

public class School {

    Student obj_Student;

    public School() {
        try {
            obj_Student = new Student();
            obj_Student.setId(12);
            obj_Student.getId();
        }
        catch(Exception e) {
            System.out.println("Null Pointer ");
        }
    }
}
33
задан Robert Harvey 4 November 2011 в 22:47
поделиться

7 ответов

Поскольку использование нажатия требует, чтобы открытое HTTP-соединение сохранялось между Вашим сервером и каждым клиентом, я пошел бы для опроса также - не, только то, что попытка использовать много ресурсов сервера, но это также будет значительно более хитрым для реализации как матовый упомянутый b.

Мой опыт с опросом состоит в том, что, если у Вас есть достаточно частый интервал опроса на достаточно оживленном сайте, Ваши журналы веб-сервера могут быть лавинно разосланы запросами опроса, реальными быстро.

Редактирование (2017) : я сказал бы, что Ваш выбор, теперь между websockets и долгим опросом (упомянут в другом ответе). Кажется, что долгий опрос мог бы быть правильным выбором на основе способа, которым вопрос упоминает, что уведомления не должны быть получены в режиме реального времени, нечастый период опроса было бы довольно легко реализовать и не должен быть очень налоговым на Вашем сервере. Websockets являются классными и большой выбор для многих приложений в эти дни, кажется, что это могло бы быть излишеством в этом случае все же.

5
ответ дан 27 November 2019 в 18:34
поделиться

Я реализовал бы опрос просто, потому что звучит более простым записать, и хранение его простой очень ценно.

3
ответ дан 27 November 2019 в 18:34
поделиться

Не уверенный, если Вы смотрели на некоторые реализации КОМЕТЫ там (это, что Вы подразумеваете под нажатием Ajax).

, Если пользователь перемещается по сайту, который не будет в действительности запрашивать информацию у сервера, на котором может осуществить контрейлерные перевозки это уведомление?

1
ответ дан 27 November 2019 в 18:34
поделиться

Невозможно сказать, будет ли опрос более дорогим затем продвижение, не зная, сколько клиентов Вы будете иметь. Я рекомендовал бы опросить потому что:

  • Это кажется, что Вы хотите обновить данные об однажды в минуту. Если уведомления не могут прибыть в намного более быстрый уровень, чем который, продвижение означало бы, что Вы сохраняете HTTP-соединение открытым, но видите очень мало действия по нему.
  • Опрос создается сверху существующих конвенций HTTP, таким образом, любой сервер, который говорит с веб-браузерами, уже готов ответить на обычные запросы Ajax. Comet†“или Flash socket†“базирующееся решение имеют различные требования; Вам будет нужно что-то как cometd на стороне сервера и клиентской библиотеке это groks нажатие серверной стороны.

Поэтому, если бы Вам было нужно что-то мощное для управления потоком данных и crapload клиентов, я рекомендовал бы Комету. Но это, кажется, не имеет место.

1
ответ дан 27 November 2019 в 18:34
поделиться

Я не попробовал его сам, но некоторые говорят работы КОМЕТЫ, и легче, чем Вы думаете . Существует также плагин Ruby on Rails, названный Безжалостная сила , что я услышал, говорил о высоко. Снова, я не использовал его, таким образом, YMMV, но мое понимание - то, что требуется гораздо меньше ресурсов по сравнению с опросом. Я верю (кто-то может подтвердить?), что КОМЕТА - то, как MacRumorsLive.com поставляет живой блоггинг WWDC Stevenotes.

1
ответ дан 27 November 2019 в 18:34
поделиться

Оба имеют различные требования и обращаются к различным сценариям.

, Если Вам нужно обновления в реальном времени , как в онлайн-чате, нажатие - необходимость.

, Но, если период обновления большой , как это находится в Вашем случае (5 минут), затем объединяют, соответствующее решение. Продвиньте, в этом случае, потребует большого количества ресурса и от клиента и от сервера.

Подсказка! попытка сделать страницу, которая проверяет пул быстро и чистый, таким образом, это не делает, использует много ресурсов в сервере в каждом запросе. То, что я обычно делаю, должно сохранить флаг в памяти (как в переменной сеанса), который говорит, пуст ли пул или не... так, я только делаю взгляд havy в пуле, только если это не пусто. Когда пул пуст, который является большую часть времени, запрос страницы работает чрезвычайно быстро.

7
ответ дан 27 November 2019 в 18:34
поделиться

Определенно используйте толкнуть его намного круче. Если вам нужны простые уведомления, я бы использовал что-то вроде StreamHub Push Server , чтобы сделать за вас тяжелую работу. Разработка собственной функциональности Ajax Push - чрезвычайно сложный и трудный путь - вы должны заставить ее работать во всех браузерах, а затем обрабатывать брандмауэры и прокси, убивая соединения keep-alive и т. Д. Зачем изобретать колесо. Кроме того, он имеет столь же низкую занимаемую площадь - менее 10 КБ, поэтому он должен подойти, если это является для вас приоритетом.

10
ответ дан 27 November 2019 в 18:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: