美文网首页nodejs
Swift中使用CocoaMQTT实现MQTT协议

Swift中使用CocoaMQTT实现MQTT协议

作者: Sultan | 来源:发表于2016-08-26 17:24 被阅读1280次

MQTT介绍

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输,是IBM开发的一个即时通讯协议,有可能成为物联网的重要组成部分。该协议支持所有平台,几乎可以把所有联网物品和外部连接起来,被用来当做传感器和致动器(比如通过Twitter让房屋联网)的通信协议。

MQTT特点

  • 使用发布/订阅消息模式,提供一对多的消息发布,解除应用程序耦合;
  • 对负载内容屏蔽的消息传输;
  • 使用 TCP/IP 提供网络连接;
  • 有三种消息发布服务质量:
    “至多一次”,消息发布完全依赖底层 TCP/IP 网络。会发生消息丢失或重复。这一级别可用于如下情况,环境传感器数据,丢失一次读记录无所谓,因为不久后还会有第二次发送。
    “至少一次”,确保消息到达,但消息重复可能会发生。
    “只有一次”,确保消息到达一次。这一级别可用于如下情况,在计费系统中,消息重复或丢失会导致不正确的结果。
  • 小型传输,开销很小(固定长度的头部是 2 字节),协议交换最小化,以降低网络流量;
  • 使用 Last Will 和 Testament 特性通知有关各方客户端异常中断的机制

CocoaMQTT使用

  • Install using CocoaPods by adding this line to your Podfile:

pod 'CocoaMQTT'

```
  • Then, run the following command:

pod install

```
  • 导入CocoaMQTT

import CocoaMQTT

```
  • 初始化CocoaMQTT

      let clientIdPid = "" + String(NSProcessInfo().processIdentifier)
      mqtt = CocoaMQTT(clientId: clientIdPid, host: "192.168.9.135", port: 1881)
      if let mqtt = mqtt {
          mqtt.username = "57bec7e6cc96586442651585"
          mqtt.password = "rehL66qTLwmpruFQNacGqr4YedRDMptt"
          mqtt.willMessage = CocoaMQTTWill(topic:"v1.0/regist/57bec7e6cc96586442651585/12345", message:"did")
          mqtt.keepAlive = 90
          mqtt.delegate = self
      }
    
  • 实现其代理方法

      func mqtt(mqtt: CocoaMQTT, didConnect host: String, port: Int) {
      print("didConnect \(host):\(port)")
      }
    
           func mqtt(mqtt: CocoaMQTT, didConnectAck ack: CocoaMQTTConnAck) {
      //print("didConnectAck \(ack.rawValue)")
      if ack == .ACCEPT {
          mqtt.subscribe("v1.0/regist/57bec7e6cc96586442651585/12345", qos: CocoaMQTTQOS.QOS1)
          mqtt.ping()
    
      }
      
    }
    
    func mqtt(mqtt: CocoaMQTT, didPublishMessage message: CocoaMQTTMessage, id: UInt16) {
        print("didPublishMessage with message: \(message.string)")
    }
    
    func mqtt(mqtt: CocoaMQTT, didPublishAck id: UInt16) {
      print("didPublishAck with id: \(id)")
    }
    
    func mqtt(mqtt: CocoaMQTT, didReceiveMessage message: CocoaMQTTMessage, id: UInt16 ) {
      print("didReceivedMessage: \(message.string) with id \(id)")
      NSNotificationCenter.defaultCenter().postNotificationName("MQTTMessageNotification" + animal!, object: self, userInfo: ["message": message.string!, "topic": message.topic])
    }
    
    func mqtt(mqtt: CocoaMQTT, didSubscribeTopic topic: String) {
      print("didSubscribeTopic to \(topic)")
    }
    
    func mqtt(mqtt: CocoaMQTT, didUnsubscribeTopic topic: String) {
      print("didUnsubscribeTopic to \(topic)")
      }
    
    func mqttDidPing(mqtt: CocoaMQTT) {
      print("didPing")
    }
    
    func mqttDidReceivePong(mqtt: CocoaMQTT) {
      _console("didReceivePong")
    }
    
    func mqttDidDisconnect(mqtt: CocoaMQTT, withError err: NSError?) {
      _console("mqttDidDisconnect")
    }
    
    func _console(info: String) {
      print("Delegate: \(info)")
    

    }

  • 消息发送
    mqtt!.publish("chat/room/animals/client/" + client, withString: message, qos: .QOS1)

  • 消息接收
    代理方法中didReceiceMessage中返回接收到的消息

  • 断开连接
    mqtt!.disconnect()

相关文章

  • Swift中使用CocoaMQTT实现MQTT协议

    MQTT介绍 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输,...

  • ESP32学习笔记(46)——MQTT客户端

    一、MQTT简介 1.1 实现方式 实现MQTT协议需要客户端和服务器端通讯完成,在通讯过程中,MQTT协议中有三...

  • HI3861学习笔记(24)——MQTT客户端

    一、MQTT简介 1.1 实现方式 实现MQTT协议需要客户端和服务器端通讯完成,在通讯过程中,MQTT协议中有三...

  • iOS MQTT SDK - CocoaMQTT 介绍

    CocoaMQTT 是一款由EMQ开发提供的 iOS/macOS/tvOS 下的 开源 MQTT 客户端库, 使用...

  • MQTT协议简单实践

    #一、 实验目的 学习了解MQTT协议,并会简单的使用。 #二、实验内容 熟悉使用MQTT协议,并利用MQTT进行...

  • Swift代理协议的安全使用

    文章 Swift代理协议的安全使用 概述 在Swift下,使用代理协议,并且检验代理对象的存在和协议函数是否被实现...

  • 使用Node.js实现mqtt协议

    记录一下自己学习mqtt的过程,如何从零开始使用Node.js实现mqtt协议,实现一个web页面向android...

  • 物联网mqtt协议

    mqtt协议学习与使用 一.先简单介绍一下mqtt协议 mqtt协议是基于Tcp/ip 的一种通信协议,是建立在可...

  • php mtt扩展踩坑总结

    mqtt协议是时下比较好用的发布/订阅模式协议。但是在具体使用的过程中,使用PHP的mqtt扩展会遇到一些奇葩问题...

  • MQTT客户端代码分析

    MQTT客户端实现 MQTT是个轻量级的消息订阅/发布协议,基于TCP协议,在物联网中应用较广,当然也有的公司拿M...

网友评论

    本文标题:Swift中使用CocoaMQTT实现MQTT协议

    本文链接:https://www.haomeiwen.com/subject/gmszsttx.html