This document is based on the deployment of centos7
Pre-deployment preparation:
Installation wget command yum -y install wget
Install gcc-c ++
yum install gcc-c++
Install cmake
yum install cmake
Install openssl-devel
yum install openssl-devel
Installation libwebsockets
mkdir libwebsockets
wget https://github.com/warmcat/libwebsockets/archive/v1.3-chrome37-firefox30.tar.gz
tar -zxvf v1.3-chrome37-firefox30.tar.gz
cd libwebsockets-1.3-chrome37-firefox30
mkdir build
cd build
cmake ..
make install
Create a soft link
ln -s /usr/local/lib/libwebsockets.so.4.0.0 /usr/lib/libwebsockets.so.4.0.0
ldconfig
Installation mosquitto
mkdir mqtt
cd mqtt
wget http://mosquitto.org/files/source/mosquitto-1.6.3.tar.gz
tar -zxvf mosquitto-1.6.3.tar.gz
1.6.3-cd mosquitto
Modify the file config.mk
we config.mk
WITH_WEBSOCKETS:=yes
make
make install
Create a soft link
ln -s /usr/local/lib/libmosquitto.so.1 /usr/lib/libmosquitto.so.1
ldconfig
Enter / etc / mosquitto modify the configuration file directory
Copy mosquitto.conf.example profile
cp mosquitto.conf.example mosquitto.conf
cp pwfile.example pwfile.conf
cp aclfile.example aclfile.conf
vi mosquitto.conf
Modify ago #allow_anonymous: true
Modified allow_anonymous: false
Modify ago #password_file
After modifying password_file /etc/mosquitto/pwfile.conf
Modify ago #acl_file
After modifying /etc/mosquitto/aclfile.conf
Modify ago #protocol mqtt
Modified protocol websockets
Add mosquitto Username Password
mosquitto_passwd /etc/mosquitto/pwfile.conf mqtttest Enter enter the password twice to complete
Modify user permissions
there aclfile.conf
Add a user profile
user mqtttest
topic readwrite mqtttest (here mqtttest to publish \ subscribe identifiers, read and write permissions to read / write / readwrite)
Create a user test
groupadd mosquitto
useradd -g mosquitto mosquitto
Start command
mosquitto -c /etc/mosquitto/mosquitto.conf
Open external access port
--permanent permanent failure or reboot
firewall-cmd --zone=public --add-port=1883/tcp --permanent
After adding the port reloaded
firewall-cmd --reload
The sample code browser client
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/paho-mqtt/1.0.2/mqttws31.js"></script>
</head>
<body>
<script type="text/javascript">
was mqtt;
was host = "192.168.91.130 ';
each port = 1883;
// onConnect event
function onConnect() {
console.log('connected.');
let i=0;
let timer = setInterval(() => {
i++;
var raw_message = 'information!' + i;
message = new Paho.MQTT.Message(raw_message);
message.destinationName = 'mqtttest';
console.log('sending message: ' + raw_message);
mqtt.send(message);
if(i >= 5){
clearInterval(timer);
}
},1000)
// subscribe to download topic
was subOptions = {
qos: 1,
onSuccess: onSubscribe
};
mqtt.subscribe('mqtttest', subOptions);
}
// subscribe to topics success events
function onSubscribe(context) {
console.log('subscribe success');
console.log(context);
}
// connection failure events
function onFailure(message) {
console.log('connect failed.');
}
// onMessageArrived 事件
function onMessageArrived(message) {
console.log('new message arrived...');
console.log(message.payloadString);
}
// Create connection MQTT websocket
function MQTTconnect() {
console.log('connecting to ' + host + ':' + port);
mqtt = new Paho.MQTT.Client(host, port, 'clientid');
was options = {
timeout: 3,
onSuccess: onConnect,
onFailure: onFailure,
userName: 'mqtttest',
password: 'mqtttest',
mqttVersion: 4
};
mqtt.onMessageArrived = onMessageArrived;
mqtt.connect(options);
}
MQTTconnect();
</script>
</body>
</html>