Giter Site home page Giter Site logo

acsantanamx / rn-native-mqtt Goto Github PK

View Code? Open in Web Editor NEW

This project forked from frozenpyrozen/rn-native-mqtt

0.0 0.0 0.0 226 KB

An MQTT client for React Native that actually works and exposes a simple Javascript interface

License: MIT License

Ruby 2.67% Objective-C 4.56% Java 43.04% TypeScript 16.47% Swift 33.26%

rn-native-mqtt's Introduction

React Native - Native MQTT

This is an MQTT client library for React Native. It utilizes native MQTT client libraries and exposes them via a unified Javascript interface. There are a few other React Native MQTT libraries, but they did not seem to work as expected, or did not support more advanced TLS configurations.

NOTE: This is currently tested only on React Native 0.60 and above using the automatic linking functionality.

This library uses the following native MQTT client libraries:

It supports most of the features supported by these libraries. Tradeoffs have been made to keep the interface unified, so some features are not exposed if not supported in both libraries.

This fork instead original 100% working with mqtt TLS connection with AWS on Android and IOS!

Getting started

$ npm i --save github:acsantanamx/rn-native-mqtt

-- or --

$ yarn add github:acsantanamx/rn-native-mqtt

Installation

If you are not on React Native 0.60+ and not using auto-linking, you may need to run the usual link command as below:

$ react-native link react-native-native-mqtt

This module has only been tested on 0.60+, so at this point you are a bit on your own, but should be standard stuff.

Additional Installation Steps

There are still some manual tasks that need to be done to wire this package up for both iOS and Android. Please perform the steps below to get everything working.

Android

  • Set your minSdkVersion in the android/build.gradle file to 21 or higher.

iOS

We need to add a bridging header file to your Xcode project because this module was written in Swift.

  • Open your project's ios folder in Xcode.
  • Add a new Swift file to the project. Name it whatever you want. Add a bridging header file when it prompts you to add one automatically.

Now you need to run a pod install for your project.

  • Navigate to the ios folder in your project and run pod install.

Usage

This is a quick example written in Typescript.

import * as Mqtt from 'react-native-native-mqtt';

const client = new Mqtt.Client('[SCHEME]://[URL]:[PORT]');

// Promisifyed connect
await client.connect({
	clientId: 'CLIENT_ID',
	tls: {
          caDer: 'ca certificate in Buffer, in my case Amazon root certificate, which I get from BA endpoint',
          cert: 'cert in Buffer, in my case from BA endpoint',
          key: 'key in Buffer, in my case from BA endpoint',
        },
        enableSsl: true,
});

client.on(Mqtt.Event.Message, (topic: string, message: Buffer) => {
	console.log('Mqtt Message:', topic, message.toString());
});

client.on(Mqtt.Event.Connect, () => {
	console.log('MQTT Connect');
	client.subscribe(['#'], [0]);
});

client.on(Mqtt.Event.Error, (error: string) => {
	console.log('MQTT Error:', error);
});

client.on(Mqtt.Event.Disconnect, (cause: string) => {
	console.log('MQTT Disconnect:', cause);
});

rn-native-mqtt's People

Contributors

davesters avatar frozenpyrozen avatar vgema avatar acsantanamx avatar 256hz avatar

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.