• WCF透过Openfire连接Android Client


        为了有更好的扩展性,将发送消息的.net 程式发布成WCF,以便更好地使用。

      1.WCF 的写法有很多教程,google一下就有了,这里我就不多说了,这里我主要是发送一个IQ包给我的openfire服务器,然后服务器通过IQHandler过滤出我需要处理的信息,最后再到达我的Android client。

      2.在IQHandler里面呢,最主要的是新建一个类,然后 extends IQHandler ,下面重点来了,继承IQHandler之后,Eclipse会要求你重写他的一些方法,和构造函数。先从构造函数开始吧,你可以在里面初始化你的IQHandlerInfo info;这个info是你要想过滤到的命名空间的信息,例如openfire 里面的 router:iq 之类的,这个命名空间你可以自己定义的,但是你定义的这个空间必须是你创建出来的东西,并且能够镶嵌在你的IQ包里面。

      3.搞定了构造函数,先来个简单的那个方法吧。getInfo(),这里你直接返回你要给他过滤的info就好。

      4.搞完了上面这些,下面就是关键地方了handleIQ(IQ packet) 这个方法。里面写你要过滤的东西以及处理相应的东西。

    public IQ handleIQ(IQ packet) throws UnauthorizedException {
      // TODO Auto-generated method stub
      System.out.println("捕获到 相应的IQ了!");
      IQ reply=IQ.createResultIQ(packet);
      Element cmdElement=packet.getElement();
       if (!IQ.Type.get.equals(packet.getType())){ 
                 System.out.println("非法的请求类型"); 
                 reply.setChildElement(cmdElement.createCopy()); 
                 reply.setError(PacketError.Condition.bad_request); 
                 return reply; 
             }
          
          System.out.println("下面我要进行操作了");
       //收到指令后的操作,给指定的人发送信息
       XMPPServer service = XMPPServer.getInstance();
       service.getSessionManager().sendServerMessage(packet.getTo(), "IQ", "this is a IQ packet from WCF"); 
      return reply;
     }

    下面我讲一下上面那个Reply吧,一开始用的时候我也不太懂,看英文就知道它是回复的意思,实际也是差不多,如果你的IQ包里面,假如 TO属性是" A" ,FROM属性是"B";那么,你这个Reply就会把你IQ包这两个属性倒转。如果你清楚 它们的工作原理那是很简单的事情,你A 发送信息给B的话,是A先发信息给服务器,然后服务器在给B,所以,服务器回复的时候,这两个属性当然要倒转一下啦。

    5 剩下的就调试一下吧。这东西其实也不是很难了。只不过不清楚原理的话,就很烦。

    下面是我的运行图:

     

    至于Android里面的代码,其实也不难,主要是用Asmack包,登录,接受到信息就放到一个ListView里面;Listview收到就notify一下就OK了。

  • 相关阅读:
    EasyUI的DataGrid 打印导出
    js 验证各种格式类型的正则表达式
    双机热备方案
    使用 IDEA 创建 Maven Web 项目 (异常) Disconnected from the target VM, address: '127.0.0.1:59770', transport: 'socket'
    MySQL 常用函数
    使用 IDEA 创建 Maven Web 项目 (四) 让 WEB 应用跑起来
    使用 IDEA 创建 Maven Web 项目 (二) 搭建 WEB 项目框架
    使用 IDEA 创建 Maven Web 项目 (三) 编写一个简单的 WEB 应用
    Android 开发环境 —— Eclipse 启动时报错:Error when loading the SDK
    使用 EasyUI 创建左侧导航菜单
  • 原文地址:https://www.cnblogs.com/jarrah/p/2436278.html
Copyright © 2020-2023  润新知