0

libpurple を使用して FB チャットに接続しています。問題は、モバイル Facebook アプリケーションを介してオンラインになっている友人からオンライン プレゼンスを得られないことです。

しかし、そのような友人が私にメッセージを送ってきた場合、私は彼のメッセージとオンライン プレゼンスの両方を同時に受け取ります。

次のようになります。

(14:23:08) jabber: Recv (ssl)(191): <message from="-mybyddyid@chat.facebook.com"     to="myownid@chat.facebook.com/b94353f3_4CE87B53BB319" type="chat"><composing  xmlns="http://jabber.org/protocol/chatstates"/></message>

(14:23:10) jabber: Recv (ssl)(188): <message from="-mybyddyid@chat.facebook.com"   to="myownid@chat.facebook.com/b94353f3_4CE87B53BB319" type="chat"><active   xmlns="http://jabber.org/protocol/chatstates"/></message>

(14:23:11) jabber: Recv (ssl)(166): <presence from="-mybyddyid@chat.facebook.com" to="myownid@chat.facebook.com/b94353f3_4CE87B53BB319"><x xmlns="vcard-temp:x:update"><photo/></x></presence>

だから、それが私のせいなのか、Facebook チャットの実装の制限なのか疑問に思っています。

4

1 に答える 1

1

プレゼンスの更新は遅れると思います。たぶん、これをチェックして、友達にメッセージを送信しないように依頼し、プレゼンスが変わるのを待つことができます. Facebook チャット開発者ページ [1] によると、プレゼンスを変更すると、プレゼンスが更新されるまでに時間がかかるようです。

また、同じページから、制限の 1 つは、Facebook チャット サーバーがプレゼンス プローブをサポートしていないことです。XMPP サーバーは、ユーザーがログインして最初のプレゼンスを送信した後、連絡先のプレゼンス情報をまだ持っていない場合、プレゼンス プローブを連絡先に送信します (RFC 3921 [2] のセクション 5.1.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

于 2012-11-17T09:54:04.970 に答える