re: gloox代碼分析3 - 注冊(cè)模塊 ysong.lee 2008-11-18 13:01
1. 我對(duì)gloox進(jìn)行了修改,client_->setHeaderTo(HEADERTO); 是自己添加的方法,目的是為了fix gloox不能連接到gtalk server的問題,通過修改,可以自己控制ClientBase::header()方法中在發(fā)送hello信息時(shí)候的to屬性,這在服務(wù)器是gtalk server的時(shí)候是有用的,如果我們的服務(wù)器地址設(shè)置為talk.google.com,則header()方法默認(rèn)to="talk.google.com",這是錯(cuò)誤的,應(yīng)該為to="gmail.com".
2. sasl failed。登陸的時(shí)候需要sasl 驗(yàn)證,如果服務(wù)器為gtalk server, 當(dāng)你接收到服務(wù)器發(fā)送的以下信息的時(shí)候
(Server -> Client)
<stream:features>
<mechanisms xmlns="urn:ietf:params:xml:ns:xmpp-sasl">
<mechanism>PLAIN</mechanism>
<mechanism>X-GOOGLE-TOKEN</mechanism>
</mechanisms>
</stream:features>
需要進(jìn)行sasl驗(yàn)證,發(fā)送的驗(yàn)證數(shù)據(jù)格式為:
'\0'+username+'\0'+password 的base64編碼, username和password必須是經(jīng)過認(rèn)證的.
例如:
'\0' + 'ysong.lee@gmail.com' + '\0' + 123456 -> 經(jīng)過base64編碼處理
(Client -> Server)
<auth xmlns="urn:ietf:params:xml:ns:xmpp-sasl" mechanism="PLAIN">
AHlzb25nLmxlZUBnbWFpbC5jb20AeXNvbmdAMTk4NA==
</auth>
3. 如果還有疑問,可以參考我的另外一篇文章“如何利用jabber協(xié)議與gtalk服務(wù)器通訊 - 建立會(huì)話”,里面詳細(xì)描述了如何登陸到gtalk服務(wù)器.
4. 做XMPP的程序,仔細(xì)閱讀從server到client和client的server的xml數(shù)據(jù)流,并參考標(biāo)準(zhǔn)協(xié)議,問題都可以解決:), 還有問題可以發(fā)email給我.
@ly