MQTT client for react-native
npm install sp-react-native-mqtt![npm]()
No longer actively maintained.
Looking for maintainers.
A react-native mqtt client module that works
#### Step 1:
``bash`
npm install sp-react-native-mqtt --save
or
`bash`
yarn add sp-react-native-mqtt
#### Step 2: (Skip this step if you are using RN 0.60 or above as the module will be auto-linked)
`bash`
react-native link sp-react-native-mqtt
#### Step 3:
##### iOS
Add pod 'MQTTClient' to your podfile and pod install
Alternatively you can manually link the library on iOS (click to expand)
In XCode, in the project navigator, right click Libraries ➜ Add Files to [your project's name]node_modules
* Go to ➜ sp-react-native-mqtt and add RCTMqtt.xcodeprojlibRCTmqtt.a
* In XCode, in the project navigator, select your project. Add and libicucore.tbd to your project's Build Phases ➜ Link Binary With LibrariesRCTMqtt.xcodeproj
* Click in the project navigator and go the Build Settings tab. Make sure 'All' is toggled on (instead of 'Basic'). In the Search Paths section, look for Header Search Paths and make sure it contains both $(SRCROOT)/../../react-native/React - mark as recursive.
##### Android
* Add the following line in getPackages() method inside the ReactNativeHost object in android/app/src/main/java/.../MainApplication.java:
`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.gradle before include ':app':
`
include ':sp-react-native-mqtt'
project(':sp-react-native-mqtt').projectDir = new File(rootProject.projectDir, '../node_modules/sp-react-native-mqtt/android')
`
- Insert the following lines inside the dependencies block in android/app/build.gradle:
``
implementation ':sp-react-native-mqtt'
`javascript
import MQTT from 'sp-react-native-mqtt';
/ 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);
});
client.connect();
}).catch(function(err){
console.log(err);
});
`
* mqtt.createClient(options) create new client instance with options, 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 if user or pass existclientId
* : string client idkeepalive
*
* clienton(event, callback)
* : add event listener forconnect
* event: - client connectedclosed
* event: - client disconnectederror
* event: - errormessage
* event: - message objectconnect
* : begin connectiondisconnect
* : disconnectsubscribe(topic, qos)
* publish(topic, payload, qos, retain)
*
* messageretain
: boolean* falseqos
: number* 2data
: string* "test message"topic
: string* "/data"
* [ ] 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
`text``
INHERIT FROM MQTT LIBRARY (progress)