Documentation Index
Fetch the complete documentation index at: https://mintlify.com/hivemq/hivemq-community-edition/llms.txt
Use this file to discover all available pages before exploring further.
Overview
MQTT over TCP is the standard, unencrypted transport protocol for MQTT connections. HiveMQ CE listens on port 1883 by default for TCP connections.
Configuration
Basic TCP Listener
<hivemq>
<listeners>
<tcp-listener>
<port>1883</port>
<bind-address>0.0.0.0</bind-address>
</tcp-listener>
</listeners>
</hivemq>
Configuration Options
| Option | Description | Default |
|---|
port | TCP port number | 1883 |
bind-address | Network interface to bind | 0.0.0.0 (all interfaces) |
name | Listener name for identification | auto-generated |
Multiple Listeners
<hivemq>
<listeners>
<tcp-listener>
<port>1883</port>
<bind-address>0.0.0.0</bind-address>
<name>default-listener</name>
</tcp-listener>
<tcp-listener>
<port>1884</port>
<bind-address>192.168.1.100</bind-address>
<name>internal-listener</name>
</tcp-listener>
</listeners>
</hivemq>
Connecting Clients
Python (paho-mqtt)
import paho.mqtt.client as mqtt
def on_connect(client, userdata, flags, rc):
print(f"Connected with result code {rc}")
client = mqtt.Client()
client.on_connect = on_connect
client.connect("localhost", 1883, 60)
client.loop_forever()
Java (HiveMQ MQTT Client)
import com.hivemq.client.mqtt.mqtt5.Mqtt5BlockingClient;
import com.hivemq.client.mqtt.mqtt5.Mqtt5Client;
public class MqttExample {
public static void main(String[] args) {
Mqtt5BlockingClient client = Mqtt5Client.builder()
.identifier("my-client")
.serverHost("localhost")
.serverPort(1883)
.buildBlocking();
client.connect();
System.out.println("Connected!");
}
}
JavaScript (MQTT.js)
const mqtt = require('mqtt');
const client = mqtt.connect('mqtt://localhost:1883');
client.on('connect', () => {
console.log('Connected!');
});
Mosquitto CLI
# Subscribe
mosquitto_sub -h localhost -p 1883 -t "test/topic"
# Publish
mosquitto_pub -h localhost -p 1883 -t "test/topic" -m "Hello"
Security Considerations
TCP transport is unencrypted. Credentials and message payloads are transmitted in plain text. Use TLS for production deployments.
When to Use TCP
- ✅ Development and testing
- ✅ Trusted internal networks
- ✅ Already encrypted at network layer (VPN)
- ❌ Public networks
- ❌ Sensitive data
- ❌ Compliance requirements
Firewall Configuration
Linux (iptables)
sudo iptables -A INPUT -p tcp --dport 1883 -j ACCEPT
sudo iptables-save
Linux (firewalld)
sudo firewall-cmd --permanent --add-port=1883/tcp
sudo firewall-cmd --reload
Docker
docker run -d --name hivemq-ce -p 1883:1883 hivemq/hivemq-ce
Next Steps
TLS Transport
Secure your MQTT connections with TLS/SSL
Connecting Clients
More client connection examples
Configuration Guide
Advanced listener configuration
WebSocket Transport
MQTT over WebSocket