java實現mqtt協議
Ⅰ 怎麼實現伺服器給android客戶端主動推送消息
採用MQTT協議實現Android推送功能是一種解決方案。MQTT是一個輕量級的消息發布/訂閱協議,是實現基於手機客戶端的消息推送伺服器的理想解決方案。
常見的解決方案實現原理:
1、輪詢(Pull)方式:客戶端定時向伺服器發送詢問消息,一旦伺服器有變化則立即同步消息。
2、SMS(Push)方式:通過攔截SMS消息並且解析消息內容來了解伺服器的命令,但這種方式一般用戶在經濟上很難承受。
3、持久連接(Push)方式:客戶端和伺服器之間建立長久連接,這樣就可以實現消息的及時行和實時性。
(1)java實現mqtt協議擴展閱讀:
推送消息注意事項:
1、支持第三方推送內容,是要客戶端和伺服器都支持的,客戶端和伺服器都導入推送SDK。
2、伺服器推送內容,可以精確指定推送時間,推送的具體接收人,用戶群,位置。
3、即推送的維度可以使時間,位置,人群。
4、極光使用了兩種不同的通知方式,一種是推送通知,一種是推送消息。
5、如果要使用androidpn,則還需要做大量的工作,需要理解XMPP協議、理解Androidpn的實現機制,需要調試內部存在的BUG。
參考資料來源:網路-伺服器
參考資料來源:網路-Android客戶端
參考資料來源:網路-信息推送
Ⅱ mqtt 伺服器搭建需要用到java嗎
最近公司做的項目中有用到消息推送,經過多方面的篩選之後確定了使用MQTT協議,相對於XMPP,MQTT更加輕量級,並且佔用用戶很少的帶寬。
MQTT是IBM推出的一種針對移動終端設備的基於TCP/IP的發布/預訂協議,可以連接大量的遠程感測器和控制設備。
MQTT的官網見:http://mqtt.org/。其中http://mqtt.org/software裡面提供了官方推薦的各種伺服器和客戶端使用的各種語言版本的API。
下面以伺服器Apollo 1.6為例,之前嘗試過使用ActiveMQ,效果很不理想,只能實現伺服器和客戶端一對一的通信,從官網上了解到Apollo屬於activemq的一個子工程。先不管這些了,言歸正傳,以下在windows環境下。
1、在這里下載Apollo伺服器,下載後解壓,然後運行apache-apollo-1.6\bin\apollo.cmd,輸入create mybroker(名字任意取,這里是根據官網介紹的來取的)創建伺服器實例,伺服器實例包含了所有的配置,運行時數據等,並且和一個伺服器進程關聯。
2、create mybroker之後會在bin目錄下生成mybroker文件夾,裡麵包含有很多信息,其中etc\apollo.xml文件下是配置伺服器信息的文件,etc\users.properties文件包含連接MQTT伺服器時用到的用戶名和密碼,後面會介紹,可以修改原始的admin=password,可以接著換行添加新的用戶名密碼。
3、打開cmd,運行…apache-apollo-1.6\bin\mybroker\bin\apollo-broker.cmd run 開啟伺服器,可以在瀏覽器中輸入http://127.0.0.1:61680/查看是否安裝成功,該界面展示了topic,連接數等很多信息。
經過上面的簡單步驟,伺服器基本上就已經完成,下一篇將介紹Android客戶端的編寫和注意事項。
客戶端使用的API,開始我使用的是mqtt-client,使用過後發現問題百出,不能很好的滿足要求,後來使用了官方推薦的Eclipse Paho,下面開始客戶端代碼的編寫,為了方便測試這里有android和j2se兩個工程:
1、新建android工程MQTTClient
2、MainActivity代碼如下:
Ⅲ 一個能運行的,用java實現的一個MQTT協議的demo,包括服務端和客戶端
https://gitee.com/cuteTree/jmqtt/ 親測有效。加群基本上有的問題也有大神回答。
Ⅳ java怎麼實現mqtt的接收通配符的數據
報什麼錯?
Ⅳ mqtt java開源框架哪個好用
MQTT(MessageQueueing Telemetry Transport Protocol)的全稱是消息隊列遙感傳輸協議的縮寫,是由IBM公司推出的一種基於輕量級代理的發布/訂閱模式的消息傳輸協議,運行在TCP協議棧之上,為其提供有序、可靠、雙向連接的網路連接保證。由於其開放、簡單和易於實現所以能夠應用在資源受限的環境中,對於M2M和物聯網應用程序來說是一個相當不錯的選擇。
Ⅵ java伺服器推送消息給android
幾種常見的解決方案實現原理
1)輪詢(Pull)方式:客戶端定時向伺服器發送詢問消息,一旦伺服器有變化則立即同步消息。
2)SMS(Push)方式:通過攔截SMS消息並且解析消息內容來了解伺服器的命令,但這種方式一般用戶在經濟上很難承受。
3)持久連接(Push)方式:客戶端和伺服器之間建立長久連接,這樣就可以實現消息的及時行和實時性。
3、消息推送解決方案概述
A、C2DM雲端推送方案
在Android手機平台上,Google提供了C2DM(Cloudto Device Messaging)服務。Android
Cloud to Device Messaging (C2DM)是一個用來幫助開發者從伺服器向Android應用程序發送數據的服務。該服務提供了一個簡單的、輕量級的機制,允許伺服器可以通知移動應用程序直接與伺服器進行通信,以便於從伺服器獲取應用程序更新和用戶數據。
該方案存在的主要問題是C2DM需要依賴於Google官方提供的C2DM伺服器,由於國內的網路環境,這個服務經常不可用。
B、MQTT協議實現Android推送
採用MQTT協議實現Android推送功能也是一種解決方案。MQTT是一個輕量級的消息發布/訂閱協議,它是實現基於手機客戶端的消息推送伺服器的理想解決方案。
wmqtt.jar
是IBM提供的MQTT協議的實現。我們可以從這里(https://github.com/toku/AndroidPushNotificationsDemo)下載該項目的實例代碼,並且可以找到一個採用php書寫的伺服器端實現(https://github.com/toku/PhpMQTTClient)。
C、RSMB實現推送功能
Really Small Message Broker (RSMB)
,是一個簡單的MQTT代理,同樣由IBM提供,其查看地址是:http://www.alphaworks.ibm.com/tech/rsmb。預設打開1883埠,應用程序當中,它負責接收來自伺服器的消息並將其轉發給指定的移動設備。SAM是一個針對MQTT寫的PHP庫。我們可以從這個http://pecl.php.net/package/sam/download/0.2.0地址下載它.
D、XMPP協議實現Android推送
Google官方的C2DM伺服器底層也是採用XMPP協議進行的封裝。XMPP(可擴展通訊和表示協議)是基於可擴展標記語言(XML)的協議,它用於即時消息(IM)以及在線探測。這個協議可能最終允許網際網路用戶向網際網路上的其他任何人發送即時消息。
androidpn是一個基於XMPP協議的java開源Android push notification實現。它包含了完整的客戶端和伺服器端。但也存在一些不足之處:
1)
比如時間過長時,就再也收不到推送的信息了。
2)性能上也不夠穩定。
3)如果將消息從伺服器上推送出去,就不再管理了,不管消息是否成功到達客戶端手機上。
如果我們要使用androidpn,則還需要做大量的工作,需要理解XMPP協議、理解Androidpn的實現機制,需要調試內部存在的BUG。
Ⅶ 物聯網雲平台遠程式控制制源碼,響應式布局,MQTT協議 Spring Boot
使用Java語言;資料庫:Mysql;經典技術組合(MQTT、Spring Boot、Shiro、MyBatis、Druid、Ehcache、Thymeleaf、Bootstrap、Swagger)開發,支持多數據源,支持代碼一鍵生成。
功能模塊:
設備管理、開關管理、計劃管理、感測器管理、感測器數據展示、報警規則管理、設備日誌、用戶管理、角色管理、部門管理、崗位管理、菜單管理、字典管理、參數管理、通知公告、操作日誌、登錄日誌、在線用戶、定時任務、代碼生成、系統介面、服務監控、緩存監控、在線構建器、連接池監視等。
功能特點:
1、硬體使用 ESP8266,基於MQTT協議,自建物聯網雲平台。
2、支持雲固件升級、設備遠程重啟。
3、支持音頻播放、開關、普通燈、調色燈等各種用電設備控制。
4、單個模塊可控制8路用電設備開關,可對模塊鬧扒團信息、開關信息、計劃任務、報警規則等維護管理。
5、雲平台可對各類感測器管理,對感測器數據有多種展示方式。可設置閾值報警規則,符合報警規則的可執行自定義的動作。
6、模塊具有一鍵配網功能,變更網路時無需重新燒寫程序,方便快捷。
7、控制端可使用任意網路(2G/3G/4G/5G/WiFi/等)控制燈、熱水器、電視、電機、窗簾、監控等各種用電設備,不受任何地區限制。
8、可雲端存儲模塊各路開關狀態,模塊斷電或重啟後可自動同步雲端模塊各路開關狀態,具有開關狀態記錄功能。
9、可記錄設備所有操作記錄,模塊、用戶上下線記錄等,並具有多種類型的數據統計展示。
10、控制設備命令下達後有狀態反饋,可確保設備控制命令執行成功,且延時低。
11、具有心跳檢測功能,模塊掉線或模塊重啟後模塊可自動重連MQTT服務,具有模塊上下線提醒功能(平台消息提醒、郵件提醒)。
12、具有定時功能,可指定某一時刻執行、周期執行、延時執行、自定義Cron表達式執行等操作。
13、可多模塊接入雲平台,可統一管理、控制模塊各路設備開關。
14、雲平台可對所有用戶管理,每個用戶可配置不同此凱角色、不同許可權,具有許可權分配功能。
15、前端採用完全響應式布局,支持電腦液橘、平板、手機等所有主流設備。
17、具有代碼一鍵生成功能(包括控制器、模型、視圖、菜單等),方便快速開發。
18、支持多數據源,簡單配置即可實現切換。
19、支持菜單、按鈕及數據許可權分配,亦可自定義數據許可權。
20、具有完善的XSS防範及腳本過濾,徹底杜絕XSS攻擊。
21、Maven多項目依賴,模塊及插件分項目,盡量松耦合,方便模塊升級、增減模塊。
22、支持服務監控、數據監控、緩存監控等功能。
Ⅷ java 實現串口接收到數據,立馬將接收到的數據通過mqtt上傳到阿里雲。
也不是特別麻煩,你先要清楚串口和伺服器用的什麼協議,假設串口用232,伺服器採用TCP,那麼你需要做的是建立一個客戶端的發送模塊,和一個串口的操作模塊(結合必須要用到多線程,以隊列或者委託來做數據交換);在測試之前一定要保證串口和客戶端發送接收是ok的才能做結合功能。
因為你串口已經做好了,那你需要的是將採集到的數據(字元串)保存到數組中,然後創建一個指向數組的指針p,然後在客戶端模塊里,將發送的數據寫成&p。建議先將數據轉16進制發,應該沒毛病。