Giter Site home page Giter Site logo

ariesw / cordova-plugin-fastrde-mqtt Goto Github PK

View Code? Open in Web Editor NEW

This project forked from linhtranvu/cordova-plugin-fastrde-mqtt

0.0 1.0 1.0 998 KB

Cordova plugin to communicate via mqtt for ios and android

Java 4.51% Objective-C 90.10% JavaScript 5.39%

cordova-plugin-fastrde-mqtt's Introduction

cordova-plugin-fastrde-mqtt

This is a fork from cordova-plugin-fastrde-mqtt (https://github.com/fastrde/cordova-plugin-fastrde-mqtt with some fix from IOCare), a good plugin for MQTT known working for both IOS and Android. I fix some dependency to make it works again and update Documentation

Successfully testing

Now working smoothly on both IOS and Android. Tested on Jan 2021, Cordova 9. XCode 12.3

Installation Android

cordova plugin add https://github.com/linhtranvu/cordova-plugin-fastrde-mqtt.git

Installation IOS

Fresh Install

First, you need to run install command directly on IOS

cordova plugin add https://github.com/linhtranvu/cordova-plugin-fastrde-mqtt.git

Install from package.json (mean you install on Android, and copy app to MacOS) will cause missing dependency.

Add and remove IOS Platform

Sometime, we need to add, remove IOS platform and add again. In this case, you need to uninstall this package first

cordova plugin remove cordova-plugin-fastrde-mqtt

Now you can safely remove IOS platform and add again, then reinstall plugin as fresh

Sorry for this buggy installation thing, but at least we have a working MQTT plugin

API

mqtt.init(options)

Initialize the mqtt-client with the given options.

    host - borker to connect to [required]
    port - port to connect to [default 1883]
    qos - Quality of Service level[default 0]
    clientId - Unique Identifier for the Client [default cordova_mqtt_<random>]
    username - username for broker authentication [default none] 
    password - password for broker authentication [default none]
    ssl - should ssl be used [default false]
    keepAlive - keepAlive sending interval in seconds [default 10]
    timeout - session timeouts after <timeout> seconds [default 30]
    cleanSession - clean Session at disconnect [default true]
    protocol - mqtt protocol level [default 4] 
    offlineCaching - NOT TESTED, so you should change to false! Should mesages be cached in sqlite before sending [default true].

mqtt.connect()

connect to the broker with the initial given options.

mqtt.disconnect()

disconnect from the broker.

mqtt.publish(message)

Send a Message.

    topic - topic where the message is send to
    message - payload of the message
    qos - Quality of Service level
    retain - should the message retain in the channel

mqtt.subscribe(options)

Subscribes to the topic with the given options

    topic - topic to subscribe
    qos - Quality of Service of the Subscription

mqtt.unsubscribe(options)

Subscribes to the topic with the given options

    topic - topic to unsubscribe

mqtt.on(event, success, error)

set callback functions for the given event.

    event - could be 
      "init":

      "connect": 
        success(status)
        error(errorMessage)
      "disconnect": 
        success(status)
        error(errorMessage)
      "publish": 
        success(message)
        error(errorMessage)
      "subscribe": 
        success(subscribtion)
        error(errorMessage)
      "unsubscribe": 
        success(topic)
        error(errorMessage)
     "message": 
        success(message)
    
    success - callback that get called on success of the event
    error - callback that get called on error of the event

mqtt.will(message)

    topic - topic where the last will is send to on disconnect
    message - payload of the message
    qos - Quality of Service level
    retain - should the message retain in the channel

Example

Make connection

      mqtt.init({
        host: '192.168.1.11', // - borker to connect to [required]: 
        port: 1883, // - port to connect to [default 1883]
        // qos - Quality of Service level[default 0]
        // clientId - Unique Identifier for the Client [default cordova_mqtt_<random>]
        username: 'username', // - username for broker authentication [default none]
        password: 'password', // - password for broker authentication [default none]
        ssl: false // - should ssl be used [default false]
        keepAlive: 60, // - keepAlive sending interval in seconds [default 10]
        timeout: 30, // - session timeouts after <timeout> seconds [default 30]
        // cleanSession - clean Session at disconnect [default true]
        // protocol - mqtt protocol level [default 4]
        offlineCaching: false // NOT TESTED, so should be false - should mesages be cached in sqlite before sending [default true]

      })
      mqtt.connect()

Pub and Sub

Publish

      mqtt.publish({
        topic: 'my topic', // - topic where the message is send to
        message: 'my message', // - payload of the message
        qos: 0, // - Quality of Service level
        retain: false // - should the message retain in the channel
      })

Subscribe

     mqtt.subscribe({
        topic: this.sub_topic, // - topic to subscribe
        qos: 0 // - Quality of Service of the Subscription
      })

Get new messages

    mqtt.on('message',
      function (s) {
        console.log(s)
        const d = new Date()
        const timeStamp = d.getHours() + ':' + d.getMinutes() + ':' + d.getSeconds()
        console.log(timeStamp + ' :' + s.topic + ' : ' + s.message)
      })

cordova-plugin-fastrde-mqtt's People

Contributors

fastrde avatar bkrajendra avatar linhtranvu avatar surajrao avatar

Watchers

James Cloos avatar

Forkers

cimoskill

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.