@pubgcorp/mqtt-handler
v0.1.11
Published
## Basic Usage
Downloads
12
Keywords
Readme
mqtt-handler
Basic Usage
in case of instantiate MqttHandler
import MqttHandler from 'mqtt-handler';
const mqttHandler = new MqttHandler(
[
"my-mqtt-endpoint-1",
"my-mqtt-endpoint-2",
],
"my-mqtt-username",
"my-mqtt-password",
);
in case of publish messages
await mqttHandler.connect();
await mqttHandler.publishMessage('my-topic', {
'my-key': 'my-value',
});
await mqttHandler.end();
in case of receive messages
await mqttHandler.connect({
'my-topic-1': async (message) => {
// do something with messages received from topic "my-topic-1"
},
'my-topic-2': async (message) => {
// do something with messages received from topic "my-topic-2"
},
});
in case of add onMessage handlers or remove onMessage handlers
await mqttHandler.addOnMessageHandler('my-topic-3', async (message) => {
// do something with messages received from topic "my-topic-3"
});
await mqttHandler.removeOnMessageHandler('my-topic-3');
in case of publish http request and response
// client side
import ClientSideMqttHandler, { MqttRequestMessage } from 'mqtt-handler';
const clientSideMqttHandler = new ClientSideMqttHandler(
[
"my-mqtt-endpoint-1",
"my-mqtt-endpoint-2",
],
"my-mqtt-username",
"my-mqtt-password",
);
await clientSideMqttHandler.connect();
const requestMessage: MqttRequestMessage = {
url: 'my-url',
method: 'POST',
data: {
message: 'message sent.'
},
};
const response = await clientSideMqttHandler.publishRequestMessage('my-request-topic', requestMessage);
console.log(response.data);
console.log(response.status);
console.log(response.statusText);
await clientSideMqttHandler.end();
// server side
import ServerSideMqttHandler, { MqttResponseMessage } from 'mqtt-handler';
const handler = async message => {
const { mqttRequestMessage, responseTopic } = JSON.parse(message);
const { url, method, headers, data } = mqttRequestMessage;
const responseMessage: MqttResponseMessage = {
data: {
message: `message received, url: ${url}, method: ${method}, headers: ${JSON.stringify(headers)}, data: ${JSON.stringify(data)}.`,
},
status: 200,
statusText: 'OK',
};
await serverSideMqttHandler.publishResponseMessage(responseTopic, responseMessage);
}
await serverSideMqttHandler.connect({
'my-request-topic': handler,
});
in case of handle request timeout
// client side
import ClientSideMqttHandler, { MqttRequestMessage } from 'mqtt-handler';
const clientSideMqttHandler = new ClientSideMqttHandler(
[
"my-mqtt-endpoint-1",
"my-mqtt-endpoint-2",
],
"my-mqtt-username",
"my-mqtt-password",
);
await clientSideMqttHandler.connect();
const requestMessage: MqttRequestMessage = {
url: 'my-url',
method: 'POST',
data: {
message: 'message sent.'
}
};
const timeout = 1000;
try {
const response = await clientSideMqttHandler.publishRequestMessage('my-request-topic', requestMessage, timeout)
} catch (error) {
if (error.message === 'Request Timeout') {
// do something in case of request timeout
}
}