Ejabberdをサーバーとして使用するチャットアプリケーションを作成したいと思います。ラップトップUbuntu12.04でejabberdをセットアップし、パブリックIPにポートフォワードします。Pidgin(Ubuntu)、Adium(MacOS)、IM +(Andriod、IOS)を使用しようとしています。それらのすべては、互いに接続してチャットすることができます。
ただし、ここのチュートリアルhttp://mobile.tutsplus.com/tutorials/iphone/building-a-jabber-client-for-ios-xmpp-integration/に従って、独自のチャットアプリを作成します。他のアカウントとチャットできない問題がいくつか発生しました。
送受信されるメッセージは次のとおりです。
2012-07-19 11:59:59:749 XMPPStream[49107:403] RosterController: awakeFromNib
2012-07-19 11:59:59:973 XMPPStream[49107:403] AppDelegate: applicationDidFinishLaunching:
2012-07-19 12:00:06:460 XMPPStream[49107:4603] SEND: <?xml version='1.0'?>
2012-07-19 12:00:06:460 XMPPStream[49107:4603] SEND: <stream:stream xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' version='1.0' to='xxx.xxx.xxx.xxx'>
2012-07-19 12:00:06:464 XMPPStream[49107:4603] RECV: <stream:stream xmlns="jabber:client" xmlns:stream="http://etherx.jabber.org/streams" id="1582664547" from="xxx.xxx.xxx.xxx" version="1.0" stream:lang="en"/>
2012-07-19 12:00:06:465 XMPPStream[49107:4603] RECV: <stream:features xmlns:stream="http://etherx.jabber.org/streams"><starttls xmlns="urn:ietf:params:xml:ns:xmpp-tls"/><mechanisms xmlns="urn:ietf:params:xml:ns:xmpp-sasl"><mechanism>PLAIN</mechanism><mechanism>DIGEST-MD5</mechanism><mechanism>SCRAM-SHA-1</mechanism></mechanisms><c xmlns="http://jabber.org/protocol/caps" hash="sha-1" node="http://www.process-one.net/en/ejabberd/" ver="wwrSvLFOLzC92POh074kJuEqYxE="/><register xmlns="http://jabber.org/features/iq-register"/></stream:features>
2012-07-19 12:00:06:465 XMPPStream[49107:403] RosterController: xmppStreamDidConnect:
2012-07-19 12:00:06:466 XMPPStream[49107:403] SEND: <auth xmlns="urn:ietf:params:xml:ns:xmpp-sasl" mechanism="DIGEST-MD5"/>
2012-07-19 12:00:06:468 XMPPStream[49107:3e0b] RECV: <challenge xmlns="urn:ietf:params:xml:ns:xmpp-sasl">bm9uY2U9IjIxNTYzMTM4ODEiLHFvcD0iYXV0aCIsY2hhcnNldD11dGYtOCxhbGdvcml0aG09bWQ1LXNlc3M=</challenge>
2012-07-19 12:00:06:468 XMPPStream[49107:3e0b] SEND: <response xmlns="urn:ietf:params:xml:ns:xmpp-sasl">dXNlcm5hbWU9Imt3ZWluZXIxIixyZWFsbT0iMjAzLjIwNS4xMC4xMjciLG5vbmNlPSIyMTU2MzEzODgxIixjbm9uY2U9Ijg1RUU5MTczLTQ0RTEtNDNDMS1CNzFBLTY3OEE5NTQ2MjU1MiIsbmM9MDAwMDAwMDEscW9wPWF1dGgsZGlnZXN0LXVyaT0ieG1wcC8yMDMuMjA1LjEwLjEyNyIscmVzcG9uc2U9NzMwZWZjNzUxOWIwNzNiNDEzMGU0NjFjMmVmMjliNmIsY2hhcnNldD11dGYtOA==</response>
2012-07-19 12:00:06:502 XMPPStream[49107:4603] RECV: <challenge xmlns="urn:ietf:params:xml:ns:xmpp-sasl">cnNwYXV0aD00YzRjMDk4ZGJhYjk2NmNiMTg3MzVhOTMyYTZhMDkxYw==</challenge>
2012-07-19 12:00:06:502 XMPPStream[49107:4603] SEND: <response xmlns="urn:ietf:params:xml:ns:xmpp-sasl"/>
2012-07-19 12:00:06:854 XMPPStream[49107:4603] RECV: <success xmlns="urn:ietf:params:xml:ns:xmpp-sasl"/>
2012-07-19 12:00:06:854 XMPPStream[49107:4603] SEND: <stream:stream xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' version='1.0' to='xxx.xxx.xxx.xxx'>
これが私が観察したものです:
- ejabberdサーバーをオフにすると、クライアントアプリが機能しなくなります。これは、サーバーに接続しようとしたことを意味します。
- Android、Ubuntu、MacOSでは、ログインするたびに証明書の受け入れを求められます。しかし、私のiOSアプリでは表示されません。
- 成功した後、再交渉し、応答がないようです。
- ejabberdのWeb管理者には、オンラインユーザーが表示されません。ただし、リクエストがログに記録されているようです。iOSでXMPPアプリケーションをデバッグするには、どのドキュメントと手順に従う必要がありますか?
Ubuntu(Linux 32ビット)でXCode 4.3.2 iOS 5.1Ejabberd2.1.11を使用しています。私は2日間デバッグとグーグルを試みましたが、手がかりがありません