22 lines
628 B
JavaScript
22 lines
628 B
JavaScript
// @flow
|
|
import mqtt from "mqtt";
|
|
import { MQTT_MESSAGE, MQTT_CONNECT, MQTT_DISCONNECT } from "./stateActions";
|
|
import { Store } from "redux";
|
|
import Config from "./config";
|
|
import R from "ramda";
|
|
|
|
export default function connectMqtt(url: string, store: Store<*,*>) {
|
|
const client = mqtt.connect(url);
|
|
client.on("connect", () => {
|
|
store.dispatch({
|
|
type: MQTT_CONNECT, mqtt: client
|
|
});
|
|
R.forEachObjIndexed(v =>
|
|
client.subscribe(v.state), Config.topics);
|
|
});
|
|
client.on("message", (topic, message) => {
|
|
store.dispatch({
|
|
type: "mqtt_message", message: message, topic: topic
|
|
});
|
|
});
|
|
}
|