Mosquitto是一个实现了MQTT3.1协议的代理服务器,由MQTT协议创始人之一的Andy Stanford-Clark开发,它为提供了轻量级数据交换的解决方案。下面记录Mosquitto的搭建步骤。
1.下载Mosquitto
下载地址http://mosquitto.org/download/
解压mosquitto.rar到任意位置,如d:\mosquitto。
2.运行mosquitto.exe,这样,推送服务的服务端就已经准备好了,监听1883端口。运行界面如下图:
3.注册推送服务
打开控制台窗口,运行 d:\mosquitto>mosquitto_sub -t user
这一步的操作是注册推送服务。操作成功后,本窗口没任何反映,但是mosquitto.exe运行界面会多两行信息,如下图:
4.接收消息
再打开另外一个控制台窗口,运行d:\mosquitto>mosquitto_pub -t user 推送消息
这时第一个注册服务的控制台窗口会出现“推送消息”4个字
映射到Android端的话,第一个注册服务的控制台窗口就是Android客户端,第二个控制台窗口就是服务器。
在搭建Android MQTT推送平台之前需要下载下面两个项目:
1.AndroidPushNotificationsDemo
https://github.com/tokudu/AndroidPushNotificationsDemo
2.PhpMQTTClient
https://github.com/tokudu/PhpMQTTClient
接下来开始搭建Android MQTT推送平台
1.推送服务端准备
运行mosquitto.exe,这样,推送服务的服务端就已经准备好了,监听1883端口。
2.推送客户端准备
将AndroidPushNotificationsDemo项目导入Eclipse中(File -> Export -> Existing Projects into Workspace)
修改PushService.java中的MQTT_HOST常量为推送服务端的IP地址。
然后启动Android模拟器。
注意:在新版本的Android SDK中可能会遇到java.lang.VerifyError:com.tokudu.demo.PushService错误
原因是发布的时候没有加入wmqtt.jar包,重新配置项目的Java Build Path即可。
运行效果如下图:
点击“Start Push Service”按钮即可开启推送服务,其中的“9774d56d682e549c”就是对应的客户端ID号。
3.发送服务准备
将PHPMQTTClient部署到PHP服务器上,如果你只是需要一个环境来运行php的话,下载AppServ,安装完了将PhpMQTTClient拷贝到\AppServ\www\下即可。
打开对应的URL地址,就可以看到发送服务的界面,实际上就是向对应的推送客户端推送消息。
接着,我们在该界面中填入客户端ID(9774d56d682e549c)和推送消息(hello)并点击“Send Push Message”按钮,服务端就向客户端推送消息。这时客户端就收到刚刚推送的消息,如下图:
也可以在命令窗口中使用mosquitto_pub.exe -q [Qos级别] -t [主题] -m [发布的内容] 进行测试。这个android客户端例子中订阅的topic[主题]是“tokudu/你的deviceID”。