Получение онлайн-присутствий для чата Facebook

Я использую libpurple для подключения к чату FB. Проблема в том, что я не получаю онлайн-присутствия от друзей, которые находятся в сети через мобильное приложение Facebook.

Но если такой друг отправляет мне сообщение, я получаю для него и сообщение, и онлайн-присутствие одновременно.

Это выглядит так:

(14:23:08) jabber: Recv (ssl)(191): <message from="[email protected]"     to="[email protected]/b94353f3_4CE87B53BB319" type="chat"><composing  xmlns="http://jabber.org/protocol/chatstates"/></message>

(14:23:10) jabber: Recv (ssl)(188): <message from="[email protected]"   to="[email protected]/b94353f3_4CE87B53BB319" type="chat"><active   xmlns="http://jabber.org/protocol/chatstates"/></message>

(14:23:11) jabber: Recv (ssl)(166): <presence from="[email protected]" to="[email protected]/b94353f3_4CE87B53BB319"><x xmlns="vcard-temp:x:update"><photo/></x></presence>

Поэтому мне интересно, моя ли это вина или ограничение реализации чата Facebook.


person Ronnix    schedule 15.11.2012    source источник


Ответы (1)


Я думаю, будет задержка с обновлениями присутствия. Может быть, вы можете проверить это, попросив своих друзей не отправлять сообщение и ожидая изменения присутствия. На странице разработчиков чата facebook [1] кажется, что будет задержка, после которой присутствие будет обновляться при его изменении.

Кроме того, с той же страницы одно из ограничений заключается в том, что сервер чата facebook не поддерживает проверки присутствия. XMPP-сервер отправляет контактам тесты присутствия, если он еще не имеет информации о присутствии контактов после того, как пользователь входит в систему, и отправляет первоначальное присутствие (см. раздел 5.1.1 RFC 3921 [2] и раздел 4.3.1 документа RFC 6121 [3]).

Если сервер не может отправлять запросы присутствия, возможно, у него нет информации о присутствии контактов. Я не знаю, как был реализован сервер чата facebook, но я предполагаю, что когда контакт что-то делает (например, отправляет сообщение/обновляет присутствие), сервер предполагает, что контакт находится в сети, и отправляет присутствие. (здесь я могу ошибаться, кто-нибудь поправьте меня, если я ошибаюсь!)

Использованная литература:

[1] http://developers.facebook.com/docs/chat/

[2] http://xmpp.org/rfcs/rfc3921.html

[3] http://xmpp.org/rfcs/rfc6121.html

person Krishna Chaitanya P    schedule 17.11.2012