Eclipse Mosquitto - An open source MQTT broker
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
Go to file
Chris Elston cd3b588601 Fix dynamic bridge start-up delay
Signed-off-by: Chris Elston <chris.elston@sancloud.com>

The first packet sent by a dynamic bridge was failing because it was
sent before the socket was fully established and the OS returned
-EAGAIN. We had to wait for the next PINGREQ to cause the initial packet
to be sent, and therefore bridge startup was delayed by the
configured keepalive timeout (default 60 seconds).

This change adds the new bridge's output socket to the list managed by
the mux, and we now send the initial CONNECT as soon as the output
socket becomes available.
4 years ago
.github Try alternative flow for cov sync. 5 years ago
apps Build lib from in mosquitto_ctrl directory. 5 years ago
client Merge pull request #1926 from Tifaifai/Bridge-Dynamic_2.0 5 years ago
cmake Fix cjson include paths. 5 years ago
deps Move deps directory to root. 5 years ago
doc JOSS paper. 9 years ago
docker Update docker builds. 5 years ago
examples Merge remote-tracking branch 'origin/fixes' into develop 5 years ago
include Merge pull request #1926 from Tifaifai/Bridge-Dynamic_2.0 5 years ago
installer Bump version, changelog and webpage. 5 years ago
lib Improve struct packing. 5 years ago
logo Improve logo files. 9 years ago
man Merge pull request #1926 from Tifaifai/Bridge-Dynamic_2.0 5 years ago
misc Fix letsencrypt instruction typo. 5 years ago
plugins Use libdir as the install prefix for plugins 5 years ago
security Fix apparmor profile to match debian packaging. 11 years ago
service Systemd service changes for updated pid path. 5 years ago
snap Attempt to fix snap build. 5 years ago
src Fix dynamic bridge start-up delay 4 years ago
test Fix LWT not being sent on client takeover. 5 years ago
www Bump version, changelog and webpage. 5 years ago
.gitignore Bridge Dynamic Update 2.0.0 5 years ago
.travis.yml Travis: Use bionic distro. 6 years ago
CMakeLists.txt Bump version, changelog and webpage. 5 years ago
CONTRIBUTING.md Fix link in CONTRIBUTING.md. 6 years ago
ChangeLog.txt Bump version, changelog and webpage. 5 years ago
LICENSE.txt Update to EPL-2.0 5 years ago
Makefile Distribute cmake/ and snap/ directories in tar. 5 years ago
README-compiling.md Bridge Dynamic Update 2.0.0 5 years ago
README-letsencrypt.md Breaking: Drop privileges after loading the configuration 5 years ago
README-tests.md Consistency in readme naming. 5 years ago
README-windows.txt Consistency in readme naming. 5 years ago
README.md Remove allow_sys_update used and deprecated 5 years ago
SECURITY.md Add SECURITY.md. 6 years ago
THANKS.txt Merge branch 'master' into develop 9 years ago
about.html Update to EPL-2.0 5 years ago
aclfile.example Initial contribution. 12 years ago
appveyor.yml Update appveyor to take into account now available packages. 8 years ago
buildtest.py Better outgoing QoS 0 limiting. 5 years ago
config.h Fix cjson include paths. 5 years ago
config.mk Merge pull request #1926 from Tifaifai/Bridge-Dynamic_2.0 5 years ago
edl-v10 Initial contribution. 12 years ago
epl-v20 Update to EPL-2.0 5 years ago
libmosquitto.pc.in Add pkg-config files to CMake build (#213) 9 years ago
libmosquittopp.pc.in Add pkg-config files to CMake build (#213) 9 years ago
mosquitto.conf Fix incorrect string length calculation. 5 years ago
notice.html Update to EPL-2.0 5 years ago
pskfile.example Initial contribution. 12 years ago
pwfile.example Initial contribution. 12 years ago
set-version.sh Bump version, changelog and webpage. 5 years ago
travis-configure.sh Better attempt at fixing mac travis. 7 years ago
travis-install.sh Resolve conflict 5 years ago

README.md

Eclipse Mosquitto

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:

Mosquitto project information is available at the following locations:

There is also a public test server available at https://test.mosquitto.org/

Installing

See https://mosquitto.org/download/ for details on installing binaries for various platforms.

Quick start

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'

To dynamically create/delete/show a bridge, use:

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

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/

Building from source

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.

Build Dependencies

  • 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.

Credits

Mosquitto was written by Roger Light roger@atchoo.org

Master: Travis Build Status (master) Develop: Travis Build Status (develop) Fixes: Travis Build Status (fixes)