分享

基于MQTT+WCF 实现Web 接口转即时服务

 WindySky 2018-03-06

-MQTT Client
-MQTT Broker
-WCF(Base Winform)
-WebControler (Base Asp.net MVC)

  1. 场景描述
    有App+Web API 实现的系统,无法实现即时服务提醒
  2. 整体模型
    这里写图片描述
  3. 解决思路
    通过使用MQTT Broker的快速搭建,开发即时服务器应用 SocketAPP1,Android/IOS 其他应用使用MQTT连接服务器,只处理订阅信息。SocketAPP1 开发WCF服务,外部能调用。更正原来Web API 增加调用WCF 服务进行通知服务。SokcetApp 和Web App并在一个服务器上,Socket APP不处理数据层

代码实例:
***Android MQTT Content
NotifyClient***

try {
    mesenger=(Messenger)intent.getExtras().get("Handle");
    String uuid=UUID.randomUUID().toString();
    uuid.replace("-","");
    uuid=uuid.substring(0,23);
    client = new NettyClient(uuid
    );
    client.setListener(new PrintingListener());
    client.connect("***.***.48.239", 1883);
    subscribe(topic);
    client.publish("keepalive","keepalive");
    mTimer.schedule(new TimerTask() {
        @Override
        public void run() {
            try {
                client.publish("keepalive","keepalive");
                Log.d("Keepalive","keepalive");
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }, 0, 10 * 1000);
    beInteractive();
  //  client.disconnect();
    Message msg = Message.obtain();
    msg.arg1=2;


    try {
        msg.obj="MQTT 服务已退出";
        mesenger.send(msg);
    }catch (Exception ex)
    {
        ex.printStackTrace();
    }
}
catch (Exception ex)
{
   // Toast.makeText(null,ex.getMessage(),Toast.LENGTH_SHORT).show();
    ex.printStackTrace();
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42

***Winform MQTT broker Winform WCF
GnatMQ***

//MQTT Broker
 uPLibrary.Networking.M2Mqtt.MqttBroker server=new uPLibrary.Networking.M2Mqtt.MqttBroker();
            server.Start();

    //启动WCF 服务
    m_Host =new ServiceHost(serviceMqtt);
            m_Host.Open();
            Console.WriteLine("WCF Server has opened .");
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

Web APP

//调用WCF 通知
  ServiceReference1.ServiceMQTTClient s = new ServiceReference1.ServiceMQTTClient();
  • 1
  • 2
  • 3

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

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多