使用开源 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 聊天的主要内容,如果未能解决你的问题,请参考以下文章

Xmpp 连接因 smack 失败

XMPP Openfire 连接被拒绝

基于XMPP协议的Android即时通信系

使用 Javascript 连接到 XMPP 服务器

通过 XMPP 连接到 yahoo messenger

XMPP Farmework 如何在iOS中获取XMPP聊天室列表?