A. php安裝mqtt擴展【Mosquitto】
沒有安裝mosquitto的可以看一下鏈接先安裝一下
MQTT伺服器搭建-mosquitto1.4.4安裝指南
然後我們來安裝php擴展
如果你已經使用預先建立的軟體包來安裝Mosquitto,你需要確保你已經安裝了開發頭文件。在紅帽派生的系統上,這可能是叫做libmosquitto-devel,在基於 Debian的系統上叫做libmosquitto-dev。
你可以使用pecl來來安裝這個拓展包:
pecl install Mosquitto-alpha
1
或者,你也可以使用常規的安裝拓展的方法來安裝:
phpize
./configure --with-mosquitto=/path/to/libmosquitto
make
make install
1
2
3
4
然後添加extension=mosquitto.so到你的PHP配置文件php.ini中。
--with-mosquitto
1
是可選參數,只有當安裝程序找不到libmosquitto拓展包,才需要添加這個參數
B. 如何用wireshark分析mqtt協議
MQTT是一項消息傳遞技術,由IBM再2001年發布。
總結一下,機制就是使用一個代理伺服器messagebroker,
客戶端client連接上這個伺服器,然後告訴伺服器說,我可以接收哪些類型的消息,
同時,client也可以發布自己的消息,這些消息根據協議的內容,可以被其他client獲取。
只要手機客戶端,連上伺服器,然後就可以接收和發布消息了,不用自己寫socket什麼了,
低帶寬,低耗電量,代碼量也少,很簡單吧。
package com.pig.test.mqtt;
import com.ibm.mqtt.MqttClient;
import
com.ibm.mqtt.MqttException;
import com.ibm.mqtt.MqttSimpleCallback;
public class SubscribeClient {
private final static String
CONNECTION_STRING = "tcp://192.168.1.60:1883";
private final static boolean
CLEAN_START = true;
private final static short KEEP_ALIVE =
30;//低耗網路,但是又需要及時獲取數據,心跳30s
private final static String CLIENT_ID =
"client1";
private final static String[] TOPICS =
{
"Test/TestTopics/Topic1",
"Test/TestTopics/Topic2",
"Test/TestTopics/Topic3",
"toku/client1"
};
private
final static int[] QOS_VALUES = {0, 0, 2,
0};
//////////////////
private MqttClient mqttClient =
null;
public SubscribeClient(String i){
try {
mqttClient =
new MqttClient(CONNECTION_STRING);
SimpleCallbackHandler
simpleCallbackHandler = new
SimpleCallbackHandler();
mqttClient.registerSimpleHandler(simpleCallbackHandler);//注冊接收消息方法
mqttClient.connect(CLIENT_ID+i,
CLEAN_START, KEEP_ALIVE);
mqttClient.subscribe(TOPICS,
QOS_VALUES);//訂閱接主題
/**
*
完成訂閱後,可以增加心跳,保持網路通暢,也可以發布自己的消息
*/
mqttClient.publish(PUBLISH_TOPICS, "keepalive".getBytes(), QOS_VALUES[0],
true);
} catch (MqttException e) {
// TODO Auto-generated
catch block
e.printStackTrace();
}
}
/**
* 簡單回調函數,處理client接收到的主題消息
* @author pig
*
*/
class SimpleCallbackHandler implements MqttSimpleCallback{
/**
* 當客戶機和broker意外斷開時觸發
* 可以再此處理重新訂閱
*/
@Override
public void connectionLost() throws Exception {
//
TODO Auto-generated method
stub
System.out.println("客戶機和broker已經斷開");
}
/**
* 客戶端訂閱消息後,該方法負責回調接收處理消息
*/
@Override
public void
publishArrived(String topicName, byte[] payload, int Qos, boolean retained)
throws Exception {
// TODO Auto-generated method
stub
System.out.println("訂閱主題: " +
topicName);
System.out.println("消息數據: " + new
String(payload));
System.out.println("消息級別(0,1,2): " +
Qos);
System.out.println("是否是實時發送的消息(false=實時,true=伺服器上保留的最後消息): " +
retained);
}
}
/**
* 高級回調
* @author pig
*
*/
class AdvancedCallbackHandler implements MqttSimpleCallback{
@Override
public void connectionLost() throws Exception {
//
TODO Auto-generated method stub
}
@Override
public void publishArrived(String arg0, byte[] arg1, int
arg2,
boolean arg3) throws Exception {
// TODO Auto-generated
method stub
}
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated
method stub
new SubscribeClient("" + i);
}
}
broker伺服器,MQTT的jar包,記得下載啊,沒有就消息我咯~
到這里,如果完成IBM的MQTT協議實現push消息的實例的,
都會有個問題,好像沒考慮到安全問題,如果客戶端連上來作亂怎麼辦呢?
上面用的broker時rsmb的,mqtt的簡單伺服器。
IBM已經推出了MQTT V3.1版本,已經加入了安全驗證機制,不要怕啦。
轉載僅供參考,版權屬於原作者。祝你愉快,滿意請採納哦
C. PHP里 $mqtt->publish("bluerhinos/phpMQTT/patterns",date($patt),0);後面的路徑是什麼意思
兩塊錢解決你的問題。一,可以看出來這個是類對一個封裝好了的方法進行調用,但是沒有具體類的內容,所以不能知道具體作用。既然你知道這個是路徑了,那也沒錯,沒啥意思就是路徑而已。
D. 怎麼實現伺服器給android客戶端主動推送消息
採用MQTT協議實現Android推送功能是一種解決方案。MQTT是一個輕量級的消息發布/訂閱協議,是實現基於手機客戶端的消息推送伺服器的理想解決方案。
常見的解決方案實現原理:
1、輪詢(Pull)方式:客戶端定時向伺服器發送詢問消息,一旦伺服器有變化則立即同步消息。
2、SMS(Push)方式:通過攔截SMS消息並且解析消息內容來了解伺服器的命令,但這種方式一般用戶在經濟上很難承受。
3、持久連接(Push)方式:客戶端和伺服器之間建立長久連接,這樣就可以實現消息的及時行和實時性。
(4)mqttphp實例擴展閱讀:
推送消息注意事項:
1、支持第三方推送內容,是要客戶端和伺服器都支持的,客戶端和伺服器都導入推送SDK。
2、伺服器推送內容,可以精確指定推送時間,推送的具體接收人,用戶群,位置。
3、即推送的維度可以使時間,位置,人群。
4、極光使用了兩種不同的通知方式,一種是推送通知,一種是推送消息。
5、如果要使用androidpn,則還需要做大量的工作,需要理解XMPP協議、理解Androidpn的實現機制,需要調試內部存在的BUG。
參考資料來源:網路-伺服器
參考資料來源:網路-Android客戶端
參考資料來源:網路-信息推送
E. 如何實現消息推送功能
?可以用第三方軟體極光推送來實現。對於定製化需求較強的,或者想擁有自己推送平台的開發者,極光提供全功能的私有雲方案。F. 如何通過php實現mqtt協議
MQTT是一個輕量級的消息發布/訂閱協議,它是實現基於手機客戶端的消息推送伺服器的理想解決方案。
我們可以從這里下載該項目的實例代碼,並且可以找到一個採用PHP書寫的伺服器端實現。
架構如下所示:
G. 如何採用mqtt協議實現android消息推送
使用一個代理伺服器message broker,客戶端client連接上這個伺服器,然後告訴伺服器,可以接收哪些類型的消息,同時client也可以發布自己的消息,這些消息根據協議的內容,可以別的client獲取。這樣就實現了消息推送。