Mosquitto is an open source implementation of a server for version 5.0, 3.1.1,
and 3.1 of the MQTT protocol. It also includes a C and C++ client library, and
the mosquitto_pub
and mosquitto_sub
utilities for publishing and
subscribing.
See the following links for more information on MQTT:
- Community page: http://mqtt.org/
- MQTT v3.1.1 standard: https://docs.oasis-open.org/mqtt/mqtt/v3.1.1/mqtt-v3.1.1.html
- MQTT v5.0 standard: https://docs.oasis-open.org/mqtt/mqtt/v5.0/mqtt-v5.0.html
Mosquitto project information is available at the following locations:
- Main homepage: https://mosquitto.org/
- Find existing bugs or submit a new bug: https://github.com/eclipse/mosquitto/issues
- Source code repository: https://github.com/eclipse/mosquitto
There is also a public test server available at https://test.mosquitto.org/
See https://mosquitto.org/download/ for details on installing binaries for various platforms.
If you have installed a binary package the broker should have been started automatically. If not, it can be started with a basic configuration:
mosquitto
Then use mosquitto_sub
to subscribe to a topic:
mosquitto_sub -t 'test/topic' -v
And to publish a message:
mosquitto_pub -t 'test/topic' -m 'hello world'
Mosquitto broker implement SYS-Topics. All SYS-Topics start $SYS and are read-only for MQTT clients. To dynamically create or delete a bridge, mosquitto use new topics: BRIDGE-Topics. All BRIDGE-Topics start with $BRIDGE and are read-write with ACL Protection.
Create Bridge:
mosquitto_bridge -p 1883 -c testBridge -a 127.0.0.1 -R 1884 -n -t \# -q 0 -l local/ -r remote/ -D both
mosquitto_bridge -p 1883 -c testBridge -a 127.0.0.1 -R 1884 -n -t \# -q 0 -l test/1883/ -r test/1884/ -D both
with json format:
mosquitto_bridge -p 1883 -c testBridge -a 127.0.0.1 -R 1884 -n -j -t \# -q 0 -l test/1883/ -r test/1884/ -D both
or via publish message to create a bridge:
mosquitto_pub -h 127.0.0.1 -p 1883 -t '$BRIDGE/new' -m 'connection testBridge
address 127.0.0.1:1884
topic # both 0 test/1883/ test/1884/
'
with json format:
mosquitto_pub -h 127.0.0.1 -p 1883 -t '$BRIDGE/new' -m '{"bridges":[{"connection":"testBridge","addresses":[{"address":"127.0.0.1","port":1884}],"topic":"#","direction":"both","qos":0,"local_prefix":"test/1883/","remote_prefix":"test/1884/"}]}'
Delete Bridge:
mosquitto_bridge -p 1883 -c testBridge -d
with json format:
mosquitto_bridge -p 1883 -c testBridge -d -j
or via publish message to delete a bridge:
mosquitto_pub -h 127.0.0.1 -p 1883 -t '$BRIDGE/del' -m 'connection testBridge'
with json format:
mosquitto_pub -h 127.0.0.1 -p 1883 -t '$BRIDGE/del' -m '{"connection":"testBridge"}'
Show all Bridges:
mosquitto_bridge -p 1883 -k
with json format:
mosquitto_bridge -p 1883 -k -j
Documentation for the broker, clients and client library API can be found in
the man pages, which are available online at https://mosquitto.org/man/. There
are also pages with an introduction to the features of MQTT, the
mosquitto_passwd
utility for dealing with username/passwords, and a
description of the configuration file options available for the broker.
Detailed client library API documentation can be found at https://mosquitto.org/api/
To build from source the recommended route for end users is to download the archive from https://mosquitto.org/download/.
On Windows and Mac, use cmake
to build. On other platforms, just run make
to build. For Windows, see also README-windows.md
.
If you are building from the git repository then the documentation will not
already be built. Use make binary
to skip building the man pages, or install
docbook-xsl
on Debian/Ubuntu systems.
- c-ares (libc-ares-dev on Debian based systems) - only when compiled with
make WITH_SRV=yes
- libwebsockets (libwebsockets-dev) - enable with
make WITH_WEBSOCKETS=yes
- openssl (libssl-dev on Debian based systems) - disable with
make WITH_TLS=no
- xsltproc (xsltproc and docbook-xsl on Debian based systems) - only needed when building from git sources - disable with
make WITH_DOCS=no
- uthash / utlist - bundled versions of these headers are provided, disable their use with
make WITH_BUNDLED_DEPS=no
- cJSON - for client JSON output support. Disable with
make WITH_CJSON=no
Auto detected with CMake.
Equivalent options for enabling/disabling features are available when using the CMake build.
Mosquitto was written by Roger Light [email protected]