Abstract
Manages connections of the yaha Mqtt broker and provides functionality to receive/send messages from/to the managed connections in three service levels ( qos 0 , 1 , 2 )
Contents
Meta
File | connections.js |
Abstract | Manages connections of the yaha Mqtt broker and provides functionality to receive/send messages from/to the managed connections in three service levels ( qos 0 , 1 , 2 ) |
Author | Volker Böhm |
Copyright | Copyright ( c ) 2020 Volker Böhm |
License | This software is licensed under the GNU LESSER GENERAL PUBLIC LICENSE Version 3 . It is furnished "as is" , without any support , and with no warranty , express or implied , as to its usefulness for any purpose . |
Class Connections
new Connections(configuration)
Creates a connection object This class is part of an MQTT style broker . It manages connections to the broker .
Connections Parameters
Name | Type | Description |
---|---|---|
configuration |
Object |
configuration |
configuration properties
Name | Type | Attribute | Default | Description |
---|---|---|---|---|
fileName |
string |
filename for persistence | ||
directory |
string |
directory ( file path ) for persistence | ||
replyTimeoutInMilliseconds |
nubmber |
optional | 10000 | timeout to wait for an answer of a http call |
inFlightWindow |
number |
optional | 1 | amount of qos 1 and qos 2 messages send for the same topic at the same time |
pubrelTimeoutInMilliseconds |
number |
optional | 24*3600*1000 | timout to wait for a corresponding pubrel message , default one day |
maxRetryCount |
number |
optional | 10 | amount of resend of messages before forcing a disconnect |
maxQueuSize |
number |
maximal amount of entries in a message queue |
Connections Methods
acknowledgeMessage
acknowledgeMessage (queueEntry)
Acknowledges a message ( qos = 1 or 2 only )
acknowledgeMessage Parameters
Name | Type | Description |
---|---|---|
queueEntry |
MessageQueueEntry |
entry of message queue acknowledged |
checkToken
checkToken (token) => {string, undefined}
Checks , if a token corresponds to a client . Returns the client
checkToken Parameters
Name | Type |
---|---|
token |
string |
checkToken throws
Type | Description |
---|---|
string |
error message |
checkToken returns
Type | Description |
---|---|
string, undefined |
clientId . |
cleanup
cleanup () => {Object}
Clean up jobs . Call regularly ( example once a minute ) Automatically disconnects clients not sending data until timeout
cleanup returns
Type | Description |
---|---|
Object |
list of clientId beeing automatically disconnected . An object with reason : string and keepAlive : number is included for each disconnected clientId |
connect
connect (clientId, host, port, clean, version, keepAlive) => {Object}
Connects a client ( Stores a connection to a client )
connect Parameters
Name | Type | Attribute | Default | Description |
---|---|---|---|---|
clientId |
any |
id of the client | ||
host |
string |
host name | ||
port |
string |
port name | ||
clean |
bool |
true , if the connection will be cleaned on disconnect | ||
version |
string |
optional | '1 . 0' | client interface version |
keepAlive |
number |
optional | 3600000 | keep alive time in milliseconds . The broker will disconnect any client not sending messages in the keepAlive interval . Default is one hour |
connect throws
Type | Description |
---|---|
Error |
connect returns
Type | Description |
---|---|
Object |
{ mqttcode , present } present = = 1 , if an old session is recovered |
disconnect
disconnect (clientId)
Disconnects a client
disconnect Parameters
Name | Type | Description |
---|---|---|
clientId |
string |
id of the client |
disconnect throws
Type | Description |
---|---|
Error |
getAllMessagesToSend
getAllMessagesToSend () => {integer}
Gets all messages to send for all clients function to be called for each message . The function has the parameter QoS and message
getAllMessagesToSend returns
Type | Description |
---|---|
integer |
amount of messages sent |
isDuplicateQos2message
isDuplicateQos2message (clientId, topic, qos, dup, packetid)
Checks and remembers a qos2 message . Returns true , if the message is a duplicate
isDuplicateQos2message Parameters
Name | Type | Description |
---|---|---|
clientId |
string |
id of the client |
topic |
string |
topic sent |
qos |
Object |
quality of service received from published headers |
dup |
boolean |
true , if the message is a duplicate |
packetid |
string |
id of the sender package |
onPubrel
onPubrel (token, packetid)
Handles a pubrel message , deleting the entry from the qos2 queue
onPubrel Parameters
Name | Type | Description |
---|---|---|
token |
string |
client send token |
packetid |
number |
unique identifier of the corresponding publish packet |
persist
async persist ()
Persists all connections
publishMessage
publishMessage (payload, qos, retain)
Adds messages that needs to be published
publishMessage Parameters
Name | Type | Description |
---|---|---|
payload |
Message |
message to add to a publish storage |
qos |
Object |
quality of service received from published headers |
retain |
boolean |
true , if the message should be retained for future subscribers |
restoreFromFile
async restoreFromFile ()
Restores all clients from last valid saved file
setWill
setWill (clientId, will)
Sets the will message of a client
setWill Parameters
Name | Type | Description |
---|---|---|
clientId |
string |
id of the client |
will |
Object |
will message configuration |
will properties
Name | Type | Description |
---|---|---|
qos |
number |
will message quality of service |
retain |
boolean |
true , if the will message is retained |
topic |
string |
topic of the will message |
value |
string, number |
value of the will message |
subscribe
subscribe (clientId, topics) => {Array.<number>}
Subscribes to topics
subscribe Parameters
Name | Type | Description |
---|---|---|
clientId |
string |
id of the client |
topics |
Object |
{ QoS , topics } or { topic1 : QoS1 , topic2 : QoS2 , . . . } |
subscribe returns
Type | Description |
---|---|
Array.<number> |
array of QoS values |
unsubscribe
unsubscribe (clientId, topics)
Unsubsribes to topics
unsubscribe Parameters
Name | Type | Description |
---|---|---|
clientId |
string |
id of the client |
topics |
Array.<string> |
array of topics strings ( topic with wildchars '+' and '#' ) |