agsxmpp c mysql_agsXMPP + Openfore 即时通讯开发(一)【agsXMPP 连接 Openfire】

需要准备的资源:

1、Openfire

2、agsXMPP (因为我一直在做NET开发,所以agsXMPP方便一些)

Start:

1、环境搭建 Openfire 安装 (文章一搜一大堆,就不在这里废话了)

2、agsXMPP 链接 Openfire (我照着链接的文章中的方法修改agsXMPP的MiniClient,最后连接成功了)

文章中有一个地方需要注意

2.修改 agsxmpp IqGrabber.cs 里的 public void SendIq(IQ iq, IqCB cb, object cbArg) 函数

public void SendIq(IQ iq, IqCB cb, object cbArg)

{

// check if the callback is null, in case of wrong usage of this class

if (cb != null)

{

TrackerData td = new TrackerData();

td.cb = cb;

td.data = cbArg;

m_grabbing[iq.Id] = td;

//我加的代码 iq在agsxmpp中发送Iq节的时候先iq.RemoveAttribute("to")

iq.RemoveAttribute("to");

}

m_connection.Send(iq);

}

这里的这个方法如果按照以上的方法这个样改的话,agsXMPP可以连接Openfire进行用户登陆了没错,但是在其他地方需要调用到这个方法的地方就全都不能用了。也就是说登录情况下调用的发送xml的方法应该去掉“to”标签,而其他的都需要存在“to”标签。 正确的改法如下:

public void SendIq(IQ iq, IqCB cb, object cbArg)

{

// check if the callback is null, in case of wrong usage of this class

if (cb != null)

{

TrackerData td = new TrackerData();

td.cb = cb;

td.data = cbArg;

m_grabbing[iq.Id] = td;

//我加的代码 iq在agsxmpp中发送Iq节的时候先iq.RemoveAttribute("to")

iq.RemoveAttribute("to");

}

m_connection.Send(iq);

}

public void SendIq2(IQ iq, IqCB cb, object cbArg)

{

// check if the callback is null, in case of wrong usage of this class

if (cb != null)

{

TrackerData td = new TrackerData();

td.cb = cb;

td.data = cbArg;

m_grabbing[iq.Id] = td;

//我加的代码 iq在agsxmpp中发送Iq节的时候先iq.RemoveAttribute("to")

//iq.RemoveAttribute("to");

}

m_connection.Send(iq);

}

登录操作:发送xml消息用 SendIq() 方法

其他操作:发送xml消息用 SendIq2() 方法

至此两个用户已经能够通过MiniClient进行聊天了

下篇文章内容为 agsXMPP + Openfire 即时通讯开发(二)【文件传输】

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值