1 myjingle底层用到了libjingle。这里只涉及其中的文字部分。语音视频和文件,基本不可能用xmpp来传。
2 myjingle缺省是登录gmail,稍改一下就可以登录openfire:
talk/xmpp/saslplainmechanism.h
credential.append(user_jid_.str());修改为credential.append(user_jid_.node());
3 修改后,可以使用域名登录openfire,但一般在本地机器上安装openfire之后,习惯都是以ip登录。myjingle使用ip登录会返回bind失败的错误。跟踪一下,发现问题和上面一样,还是改jid。
在xmpplogintask.cc的xmpplogintask::advance() 这个函数里,
找到 case loginstate_bind_requested:
关键在这一句:
if (pctx_->user_jid_.domain() != str_default_domain &&
fulljid_.barejid() != pctx_->user_jid_) 。
看一下定义:const std::string str_default_domain("default.talk.google.com");
明显不符合。
然后,两个jid的比较肯定不等,因为登录时我们用的是node。所以修改成:
if (fulljid_.barejid().node() != pctx_->user_jid_.node())
{
return failure(xmppengine::error_bind);
}
重编译一下libjingle和myjingle,登录成功,发消息成功,收消息成功。ok了。
阅读(6157) | 评论(2) | 转发(0) |