gloox不能注册新用户的问题 gloox不能注册新用户的问题
经过测试,发现gloox 0.8版自带的测试程序register_test.cpp,是没有办法注册新用户的 前面的三步是这样没错 Client->Server 001 <?xml version='1.0' ?> <stream:stream to=' xmlns='jabber:client' xmlns:stream='http://etherx./streams' xml:lang='en' version='1.0'> 客户端向服务器建立连接,version='1.0'代表客户端的所用的XMPP的版本,没有表示是0.x版,o.x版与1.0版的验证方式不同 S->C 002 <?xml version='1.0'?> <stream:stream xmlns:stream='http://etherx./streams' xmlns='jabber:client'from='' version='1.0' id='7mh6bxa8x95js1ubvkxyupysze2xpz6jhxtrzzpq'> 服务器响应连接 S->C 003 <stream:features xmlns:stream='http://etherx./streams'> <mechanisms xmlns='urn:ietf:params:xml:ns:xmpp-sasl'> <mechanism>DIGEST-MD5</mechanism> <mechanism>PLAIN</mechanism> </mechanisms> </stream:features> 服务器返回支持的验证方式 第四步应该就是发送注册新用户的请求了,但应际上,它还是发登录验证,未注册的当然就验证不通过,连接也就断开了 我改了一些代码,让注册可以实现 1. 继承Client类,重载了handleNormalNode函数 class RegisterClient : public Client { public: RegisterClient( const JID& jid, const std::string& password, int port = -1 ): Client(jid,password,port) { } bool RegisterClient::handleNormalNode( Stanza *stanza ) { if( stanza->name() == "stream:features" ) { //fastxyf modify notifyOnConnect(); return true; }; return false; }; }; 2. 将RegTest类中star函数中的 j = new Client( jid, szPassword ); 改为: j = new RegisterClient( jid, szPassword ); 这样就可以注试通过了 新注册的用户名,密码是在handleRegistrationFields函数中指定的 |
|