Android上的Mosquitto推送
Mosquitto是一個實現了MQTT3.1協議的代理伺服器,由MQTT協議創始人之一的Andy Stanford-Clark開發,它為提供了輕量級資料交換的解決方案。下面記錄Mosquitto的搭建步驟。
1.下載Mosquitto
解壓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
2.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”。