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<