织梦CMS - 轻松建站从此开始!

罗索

MyJingle的使用经验

落鹤生 发布于 2013-05-07 22:16 点击:次 
MyJingle底层用到了libjingle。这里只涉及其中的文字部分。语音视频和文件,基本不可能用xmpp来传。MyJingle缺省是登录gmail,稍改一下就可以登录openfire
TAG:

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了。
(sxcong)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net/a/201305/16619.html]
本文出处:ChinaUnix 作者:sxcong 原文
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容