使用开源 xmpp 库连接到 nimbuzz 聊天
Posted
技术标签:
【中文标题】使用开源 xmpp 库连接到 nimbuzz 聊天【英文标题】:connecting to nimbuzz chat with opensource xmpp library 【发布时间】:2012-03-16 17:42:16 【问题描述】:我正在尝试在 nimbuzz 协议中获取更多信息,并可能找到任何开源实现。
http://en.wikipedia.org/wiki/Nimbuzz_IM
nimbuzz 似乎允许不同协议的用户之间进行连接,但它提供了自己的网络用于 nimbuzz 用户之间的通信
编辑
的,我已经能够弄清楚 nimbuzz 聊天协议是 XMPP,我冒险尝试与 XMPP 客户端库(如 agsXMPP)进行连接和聊天。
到目前为止我一直无法连接或做任何事情,我的代码到目前为止看起来像:
XmppClientConnection xmpp;
void onLoginHandler(object o)
xmpp.Send(new Message("someFriend@nimbuzz.com", MessageType.chat, "hello world!"));
void errorHandler(object sender, Element e)
void exceptionHandler(object sender, Exception ex)
void rosterStartHandler(object sender)
void rosterEndHandler(object sender)
void rosterItemHandler(object sender, RosterItem item)
.....然后尝试打开
xmpp = new XmppClientConnection("nimbuzz.com");
xmpp.AutoRoster = true;
xmpp.ConnectServer = "o.nimbuzz.com";
xmpp.OnLogin += onLoginHandler;
xmpp.OnAuthError += errorHandler;
xmpp.OnError += exceptionHandler;
xmpp.OnRosterStart += rosterStartHandler;
xmpp.OnRosterItem += rosterItemHandler;
xmpp.OnRosterEnd += rosterEndHandler;
xmpp.Open("myaccount@nimbuzz.com", "mypassword");
然而,在我使用以下元素进入 OnAuthError 之后:
<not-authorized xmlns="urn:ietf:params:xml:ns:xmpp-sasl" />
我尝试在 nimbuzz 登录时使用 wireshark 嗅探数据包,尽管有一些握手 XMPP 数据包,其余的似乎是加密的,这是我能够嗅探到的:
<stream:stream to='nimbuzz.com' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' version='1.0' xml:lang='en'>
server - 195.211.49.6 (o.nimbuzz.com)
<stream:features>
<starttls xmlns="urn:ietf:params:xml:ns:xmpp-tls"/>
<compression xmlns="http://jabber.org/features/compress">
<method>zlib</method>
</compression>
<mechanisms xmlns="urn:ietf:params:xml:ns:xmpp-sasl">
<mechanism>PLAIN</mechanism>
<mechanism>DIGEST-MD5</mechanism>
</mechanisms>
<register xmlns="http://jabber.org/features/iq-register"/>
</stream:features>
client - <starttls xmlns="urn:ietf:params:xml:ns:xmpp-tls"/>
server - <proceed xmlns="urn:ietf:params:xml:ns:xmpp-tls"/>
问题如果有人能够找到正确的方法来使用开源 XMPP 库连接到 nimbuzz 聊天并在此处发布解决方案,我将奖励问题奖励。 (如果问题花费的时间超过剩下的 4 天,我可能会增加赏金)
【问题讨论】:
【参考方案1】:在 xmpp.Open 中你必须传递用户名和密码。
您的用户名是 myaccount,而不是 myaccount@nimbuzz.com。 myaccount@nimbuzz.com 是您的 Jid (Jabber Id)。
【讨论】:
【参考方案2】:经过一次WireShark的ok,看来nimbuzz其实就是xmpp协议
【讨论】:
【参考方案3】:// xmpp.ConnectServer = "o.nimbuzz.com";
你必须使用 openfire.nimbuzz.com 来连接 nimbuzz
&
添加这个并尝试---->
ConnectionConfiguration config = new ConnectionConfiguration(URLConstants.XMPP_HOST, URLConstants.XMPP_PORT);
config.setSASLAuthenticationEnabled(false);
config.setSASLAuthenticationEnabled(false);
config.setSecurityMode(ConnectionConfiguration.SecurityMode.enabled);
config.setCompressionEnabled(false);
【讨论】:
以上是关于使用开源 xmpp 库连接到 nimbuzz 聊天的主要内容,如果未能解决你的问题,请参考以下文章