Часть 1: Решение вашей проблемы
См. Часть 2 ниже, если вам действительно нужно отслеживать клиентские подключения, но я не уверен по вашему вопросу, решит ли то, что вы запрашиваете, вашу проблему.
Дайте мне посмотреть, смогу ли я повторить вашу проблему в ответ: вы пишете приложение для чата, но оно предназначено для сайта, который не полностью поддерживает AJAX (как, скажем, gmail); Сайт содержит навигацию по страницам, где вам может понадобиться перенастроить канал после того, как пользователь нажмет на ссылку на другую страницу. Когда пользователь перемещается, отображается новая страница, и вы хотите избежать получения нового токена на этом этапе; Вы хотите повторно использовать существующий токен и канал с тем же идентификатором клиента.
Если это так, у меня есть два альтернативных решения: одно простое, но с не очень хорошим пользовательским интерфейсом, другое сложнее, но с гораздо более плавным конечным результатом.
Сохранить токен в файле cookie. Когда вы повторно визуализируете свою страницу, просто используйте токен из cookie вместо повторного вызова channel.create_channel. По истечении срока действия токена вы получите обратный вызов onerror, как если бы пользователь остался на исходной странице; в этот момент снова вызовите channel.create_channel. Проблема заключается в том, что повторное соединение может быть медленным (до 10 секунд или более в плохих случаях) из-за характера соединений Comet.
Оберните весь свой сайт, не связанный с чатом, в iframe. Поместите код создания канала и пользовательский интерфейс во внешний фрейм. Таким образом, вам не нужно повторно подключаться каждый раз, когда пользователь перемещается. Это позволяет избежать простоев при навигации. Обратите внимание, что orkut использует эту технику с плавающими divами, что покажет небольшое количество исследований Firebug.
Часть 2. Ваш запрос на добавление
Если выясняется, что я неправильно понимаю, и вам действительно нужно отслеживать клиентские соединения:
Нет встроенного способа проверить, подключен ли клиент к каналу, идентифицированному идентификатором клиента.
Однако сейчас я работаю над добавлением «присутствия» (в смысле чата), чтобы ваше приложение могло зарегистрироваться, чтобы получить сообщение, когда клиент подключается или отключается от канала, созданного с данным идентификатором клиента. Вы также можете иметь возможность «проверять» присутствие, чтобы узнать, подключен ли данный идентификатор клиента или нет (все еще работает над деталями этой части).
Обратите внимание, что это будет не на основе токена, а на основе идентификатора клиента.
У меня пока нет определенной даты релиза, но, как я уже сказал, я сейчас активно работаю над этим.
Тем временем вы можете использовать сердечный ритм HTTP-запрос от вашего клиента обратно к вашему приложению, который говорит: «Эй, я все еще здесь» каждую минуту или около того. Вам понадобится какое-то задание, которое выполняется, скажем, каждые 2 минуты и помечает клиентов, которые еще не зарегистрировались, как неактивные, и вам нужно где-то хранить эти данные.