2010-10-12 4 views
0

Текущая настройка: cometD сервлет с jQuery кометным плагином.cometd bayeux: правильное отключение пользователя на странице разгрузки

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

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

});

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

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

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

+0

Hello ryan. У меня такая же проблема, и странно, что библиотека Cometd не решает ее в первую очередь. Вы нашли ответ? это будет очень полезно для меня. Спасибо – Yaron

+0

Привет Ярон, я просто добавил ответ на этот пост. Надеюсь, вам понравится! – ryan

ответ

2

Для этого кто заинтересован.

Вы можете зарегистрировать метод 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

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

 Смежные вопросы

  • Нет связанных вопросов^_^