【发布时间】:2012-07-18 05:58:39
【问题描述】:
我想创建一个使用 Ejabberd 作为服务器的聊天应用程序。我在我的笔记本电脑 Ubuntu 12.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 上,每次我登录时都要求接受 证书。但我没有在 MY iOs 应用上看到它。
- 好像成功后重新协商,没有收到任何响应。
- 在 ejabberd 的网络管理员上,我没有看到任何在线用户。但是,我看到日志中出现了请求。 在 iOS 上调试 XMPP 应用程序应该遵循哪些文档和步骤?
我在 Ubuntu(Linux 32 位)上使用 XCode 4.3.2 iOS 5.1 Ejabberd 2.1.11。我尝试调试和谷歌 2 天但没有任何线索
【问题讨论】:
标签: ios xml xmpp chat ejabberd