安装:(参考官网 http://mosquitto.org/download/)
服务器操作系统为CentOS7.0,使用最简单的yum安装
1.先加入yum源:
在/etc/yum.repos.d/目录中新建一个mosquitto.repo文件,里面写入:
[home_oojah_mqtt]
name=mqtt (CentOS_CentOS-7)
type=rpm-md
baseurl=http://download.opensuse.org/repositories/home:/oojah:/mqtt/CentOS_CentOS-7/
gpgcheck=1
gpgkey=http://download.opensuse.org/repositories/home:/oojah:/mqtt/CentOS_CentOS-7//repodata/repomd.xml.key
enabled=1
熟悉命令的可以直接下载到服务器中重命名http://download.opensuse.org/repositories/home:/oojah:/mqtt/CentOS_CentOS-7/home:oojah:mqtt.repo
2.开始安装
yum search all mosquitto
yum install mosquitto mosquitto-clients
3.配置
安装完成之后,所有配置文件会被放置于/etc/mosquitto/目录下,
其中最重要的就是Mosquitto的配置文件,即mosquitto.conf
# Place your local configuration in /etc/mosquitto/conf.d/
pid_file /var/run/mosquitto.pid
persistence true
persistence_location /var/lib/mosquitto/
#log_dest file /var/log/mosquitto/mosquitto.log
include_dir /etc/mosquitto/conf.d
4.启动服务,两种方式
mosquitto -c /etc/mosquitto/mosquitto.conf -d
sudo /etc/init.d/mosquitto start
演示部分:
前面已经开启了服务,如果没有请参考前面步骤。在本例中,发布者、代理和订阅者均为localhsot,但是在实际的情况下三种并不是同一个设备,在mosquitto中可通过-h(--host)设置主机名称(hostname)。为了实现这个简单的测试案例,需要在linux中打开三个控制台,分别代表代理服务器、发布者和订阅者。
一、开启另一个终端窗口,运行订阅程序mosquitto_sub:
注意:
消息推送的发布和订阅要有主题,选项[-t] 主题,即:mosquitto -t 主题
如需指定用户名称则加选项[-i] 用户名,即:mosquitto_sub -t 主题 -i 订阅端
<pre class="prettyprint linenums prettyprinted">
mosquitto_sub -t mqtt
</pre>
二、开启另一个终端窗口,运行发布程序mosquitto_pub:
指定消息推送的主题,发布端用户名和消息:
mosquitto_pub -t 主题 -i 发布端 -h 主机 -m 你好
*注意:如果消息中间有空格则消息要用引号括起来。
mosquitto_pub -h localhost -t mqtt -m "hello world."
这时候前面那个订阅窗口就可以收到”hello world”的消息了。
安装php扩展
// 安装mosquitto
yum install mosquitto libmosquitto-devel mosquitto-clients
//安装扩展
yum install php-pear php-devel。 // yum install php56w-pear php56w-devel
//配置php.ini
extension=mosquitto.so;//加入php.ini
此时phpinfo中已经可以查到mosquitto的值
实现发布的Demo
class MqttMessage{
public function Message(){
$client = new Mosquitto\Client();
$client->onConnect(function($code, $message) use ($client) {
var_dump($code);
var_dump($message);
$client->subscribe('testing', 0);//订阅topic为testing的消息
});
$client->onMessage(function($message) use($client){
echo $message->topic, "\n", $message->payload, "\n\n";
$client->publish('testing2','testing2',0);//想topic为testing2,发布消息“testing2”
});
$client->connect('127.0.0.1', 1883);
$client->loopForever();
}
}
$mqtt =new MqttMessage();
$mqtt->Message();
运行PHP脚本
php MqttMessage.php
发布消息
mosquitto_pub -t testing -m testing-messgae
php脚本接受到消息并且打印出来
PHP脚本中,在收到消息后,会发布一个消息到topic为testing2中,后台会接收消息
参考:# PHP 使用mosquiito
参考