-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathmqtt.js
64 lines (56 loc) · 1.47 KB
/
mqtt.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
import mqtt from 'mqtt';
import fetch from 'node-fetch';
import config from "config";
const brokerUrl = 'mqtt://mqtt.arcplex.fr';
const port = 2295;
const topic = 'groupe3/packet/#';
const client = mqtt.connect(brokerUrl, {
port,
username: 'groupe3',
password: '8ae3V7skJoIs',
});
client.on('connect', () => {
client.subscribe([topic], function (err) {
if (err) {
console.log(topic, err)
}
})
});
client.on('message', (topic, message) => {
const msg = message.toString()
processMessage(msg, topic);
});
function processMessage(message, topic) {
const url = config.get('api_symfony');
const data = {
message: message,
topic: topic
}
console.log(topic, ' : Traitement du message : ', data);
fetch(url, {
method: 'POST',
body: JSON.stringify(data),
headers: { 'Content-Type': 'application/json' }
})
.then(response => {
if (response.ok) {
console.log('Message envoyé avec succès à l\'URL :', url);
return response.json()
} else {
console.error('Erreur lors de l\'envoi du message à l\'URL :', url);
}
})
.then(data => {
console.log('Réponse JSON :', data);
})
.catch(error => {
console.error('Erreur lors de l\'envoi du message à l\'URL :', url, error);
});
}
export function sendMessage(topic, message) {
client.publish(topic, message);
}
client.on('error', (error) => {
console.error('Erreur de connexion MQTT :', error);
client.reconnect();
});