分享

C#访问openfire服务器之一:服务端的安装、客户端的简介

 WindySky 2016-03-14

 最近在移动端开发中遇到推送消息、即时通信的需求,以前没有注意过这方面的知识,特别花费一段时间捣鼓了一下,初步实现了c#访问openfire服务器,实现即时通信。特此记录一下,方便与我一般的初涉者参考。


首先,即时通信服务分为服务端与客户端两块。

一、服务端

服务端使用openfire直接进行搭建,基本上是一步步向下操作即可。

我使用的是exe版本的安装程序,首先正常安装,然后启动服务器端,进入其web的管理台,进行一些初始化的设置。中间主要需要设置数据库访问,注意官方自带的JDBC类型并不完整,比如我使用的是oracle,则需要自己下载相应数据库版本的JDBC,将包放到openfire安装目录下的lib文件夹中。

测试:服务端设置成功以后,可以安装直接的Spark客户端进行测试(常规的即时通信工具)。

openfire和Spark下载地址:http://www./downloads/index.jsp


二、客户端

因为openfire是JAVA项目,我们这些C#选手想要使用须通过agsXMPP进行访问。

在使用agsXMPP访问openfire服务器时需要注意以下问题。

1.    认证协议问题

agsXMPP 在认证的时候,默认使用 DIGEST-MD5 ,但是在 openfire 下无法认证通过,改成 PLAIN 即可,也就是在 miniclient 的 frmMain.cs 的 XmppCon_OnSaslStart 方法中,将如下两行的注释去掉:

args.Auto = false;

args.Mechanism = agsXMPP.protocol.sasl.Mechanism.GetMechanismName(agsXMPP.protocol.sasl.MechanismType.PLAIN);

2.    Iq 节

Openfire 不支持 Iq 节带 to 的属性,所以在 agsXMPP 中发送 Iq 节的时候先 RemoveAttribute("to") 一下就行了,具体的就是找到 agsXMPP 源代码目录下的 sasl/saslHandler.cs 文件中,所有调用 SendIq 方法的前面,都加入如下语句:

bIq.RemoveAttribute("to");


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多