Cometd Bayeux: правильная обработка отключения пользователя на странице разгрузки - PullRequest
0 голосов
/ 12 октября 2010

Текущая настройка: сервлет cometD с плагином jQuery cometd.

Допустим, у меня есть простая чат-комната, к которой в данный момент подключено 2 пользователя (userA и userB).Когда пользователь B уходит со страницы, мне нужно, чтобы пользователь A был уведомлен о том, что пользователь B покинул комнату.Есть ли способ сообщить пользователю A, что пользователь B ушел без использования обработчика unload?

$ (окно) .unload (function () {
/ ** позволяет уведомить других пользователей о том, что currentUserId оставлен ** /

});

после проведения множества испытаний;приведенный выше блок кода не является надежным.

Единственное решение, которое я могу придумать, - это использовать setInterval, где каждую 1 минуту администратор будет перебирать массив подключенных пользователей, а затем «пингует» их, чтобы проверить, является ли илине они все еще связаны.

Есть идеи?Должен ли я использовать метод опроса setInterval?

Ответы [ 2 ]

2 голосов
/ 18 февраля 2011

Для тех, кто заинтересован.

Вы можете зарегистрировать метод «removeListener», когда сервер завершает сеанс пользователя.

    client.addListener(new ServerSession.RemoveListener() {
        public void removed(ServerSession session, boolean timeout){
            members.values().remove(session.getId());
            broadcastMembers(members.keySet());
        }
    });

Пример полного кода: ChatService.java# handleMembership

0 голосов
/ 25 октября 2013

Да, я знаю, что этот вопрос старый, но почему бы просто не использовать PresenceListener?

...