sp-react-native-mqtt-with-publish-callback
v0.1.1
Published
MQTT client for react-native
Readme
Announcements:
No longer actively maintained. Looking for maintainers.
Description
A react-native mqtt client module that works
MQTT Features (inherited from the native MQTT framework)
- Uses MQTT Framework for IOS, Paho MQTT Client for Android
- Supports both IOS and Android
- SSL/TLS
- Native library, support mqtt over tcp (forget websockets, we're on mobile)
Getting started
Installation
Step 1:
npm install sp-react-native-mqtt-with-publish-callback --saveor
yarn add sp-react-native-mqtt-with-publish-callbackStep 2: (Skip this step if you are using RN 0.60 or above as the module will be auto-linked)
react-native link sp-react-native-mqtt-with-publish-callbackStep 3:
iOS
Add pod 'MQTTClient' to your podfile and pod install
In XCode, in the project navigator, right click Libraries ➜ Add Files to [your project's name]
- Go to
node_modules➜sp-react-native-mqtt-with-publish-callbackand addRCTMqtt.xcodeproj - In XCode, in the project navigator, select your project. Add
libRCTmqtt.aandlibicucore.tbdto your project'sBuild Phases➜Link Binary With Libraries - Click
RCTMqtt.xcodeprojin the project navigator and go theBuild Settingstab. Make sure 'All' is toggled on (instead of 'Basic'). In theSearch Pathssection, look forHeader Search Pathsand make sure it contains both$(SRCROOT)/../../react-native/React- mark asrecursive.
Android
- Add the following line in
getPackages()method inside theReactNativeHostobject inandroid/app/src/main/java/.../MainApplication.java:
packages.add(new RCTMqttPackage()); // as a child of the getPackages() returned array
Don't forget to include import com.tuanpm.RCTMqtt.*; with the other imports at the top.
- Append the following lines to
android/settings.gradlebeforeinclude ':app':
include ':sp-react-native-mqtt-with-publish-callback'
project(':sp-react-native-mqtt-with-publish-callback').projectDir = new File(rootProject.projectDir, '../node_modules/sp-react-native-mqtt-with-publish-callback/android')
- Insert the following lines inside the dependencies block in
android/app/build.gradle:
implementation ':sp-react-native-mqtt-with-publish-callback'Usage
import MQTT from "sp-react-native-mqtt-with-publish-callback";
/* create mqtt client */
MQTT.createClient({
uri: "mqtt://test.mosquitto.org:1883",
clientId: "your_client_id",
})
.then(function (client) {
client.on("closed", function () {
console.log("mqtt.event.closed");
});
client.on("error", function (msg) {
console.log("mqtt.event.error", msg);
});
client.on("message", function (msg) {
console.log("mqtt.event.message", msg);
});
client.on("connect", function () {
console.log("connected");
client.subscribe("/data", 0);
client.publish("/data", "test", 0, false, (messageId, message) => {
if (messageId === -1) {
console.log("message publish error", message);
}
});
});
client.connect();
})
.catch(function (err) {
console.log(err);
});API
mqtt.createClient(options)create new client instance withoptions, async operationuri:protocol://host:port, protocol is [mqtt | mqtts]host: ipaddress or host name (override by uri if set)port: port number (override by uri if set)tls: true/false (override by uri if set to mqtts or wss)user: string usernamepass: string passwordauth: true/false - override = true Set to true ifuserorpassexistclientId: string client idkeepalive
clienton(event, callback): add event listener for- event:
connect- client connected - event:
closed- client disconnected - event:
error- error - event:
message- message object
- event:
connect: begin connectiondisconnect: disconnectsubscribe(topic, qos)publish(topic, payload, qos, retain, onStatus)
messageretain: booleanfalseqos: number2data: string"test message"topic: string"/data"
Todo
- [ ] Use WeakReference for timer
- [ ] Add disconnecting event
- [ ] Add async versions of:
- [ ] connect
- [ ] subscribe
- [ ] disconnect
- [ ] unsubscribe
- [x] Allow for multi nested domains ie: na.est.example.com
- [x] Add isConnected implementation for iOS
- [x] Add isSubbed for iOS & Android
- [x] Add getTopics for iOS & Android
LICENSE
INHERIT FROM MQTT LIBRARY (progress)