1. 程式人生 > >Android上的Mosquitto推送

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”。