C#链接基于Java开发IM——Openfire

Openfire简介

   Openfire 是开源的、基于可拓展通信和表示协议(XMPP)、采用Java编程语言开发的实时协做服务器。Openfire的效率很高,单台服务器可支持上万并发用户。
  Server和Client端的通讯都用xml文档的形式进行通讯。
可是Openfire是Java语言写的,对于C#的dll拓展库相比与java的jar包少的可怜,在网上寻找一番以后找到了一个比较好的dll拓展库,agsxmpp是一个专门为C#链接xmpp协议下即时通信已经搭建xmpp协议服务端的的dll,同时他有商业版MatriX,博主穷学生一个,没有啥钱去购买商业版,仍是采用了普通的agsxmpp。java

AgsXmpp简介

  agsxmpp是AG—Software进行开发的一个开源项目,能够在它的官网进行下载源码。
  agsxmpp是在2003年开始研发,2008年发布它的最后一个版本,所以它在兼容性上显然是不很好的。
  同时在C#链接Openfire上,agsxmpp中有一个巨坑,加上网上关于agsxmpp的开发文档奇少,并且博主没有在官网上找到相关的开发文档(就算有也是全英文看不懂系列),故记下开发全过程。
  由于agsxmpp并非专门为Openfire制做的,而是对任何以xmpp协议的即时通信进行链接等服务。若是不对源码进行必定的重写,在某些状况下会出现一些问题。
  若是你直接使用 agsxmpp.dll 中 XmppClientConnection 类进行链接,就算你代码毫无错误,也没法正常链接Openfire,由于
博主只是对源码改了一句话,便可正常链接。
修改 protocol 中 sasl 下的 Mechanism.cs 中源码,将git

case "DIGEST-MD5":
    return MechanismType.DIGEST_MD5;

注释,由于 openfire 发送数据流 是经过 PLAIN 的 , 而 agsxmpp 是默认是 经过DIGEST-MD5 发送。
  同时,在agsxmpp中,还有一个地方表现了对openfire的不兼容,openfire 发送iq节 不接收 to属性,所以还须要修改一个地方
源代码以下github<

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值