1,創建單視圖項目,pod search mqtt找到一個庫,然后在項目目錄下pod init 出Podfile
2,pod install 安裝mqtt庫
3,主要代碼:
#import "MQTTClient.h" 設置<MQTTSessionDelegate>
//初始化一個傳輸類型的實例
MQTTCFSocketTransport *transport = [[MQTTCFSocketTransport alloc] init];
transport.host = @"localhost";
transport.port = 1883;
//創建一個任務
MQTTSession *session = [[MQTTSession alloc] init];
//設置任務的傳輸類型
session.transport = transport;
//設置任務的代理為當前類
session.delegate = self;
//設置登錄賬號
session.clientId = @"lichanghong";
BOOL isSucess = [session connectAndWaitTimeout:30]; //this is part of the synchronous API
if(isSucess){
//以下部分是訂閱一個主題
[session subscribeToTopic:@"topic" atLevel:2 subscribeHandler:^(NSError *error, NSArray<NSNumber *> *gQoss){
if (error) {
NSLog(@"Subscription failed %@", error.localizedDescription);
} else {
NSLog(@"Subscription sucessfull! Granted Qos: %@", gQoss);
}
}];
}
//發送數據 this is part of the asynchronous API
[session publishAndWaitData:[@"hello" dataUsingEncoding:NSUTF8StringEncoding]
onTopic:@"topic"
retain:NO
qos:MQTTQosLevelAtLeastOnce];
//主動和服務端斷開
[session disconnect];
//取消訂閱主題
[session unsubscribeTopic:@"topic" unsubscribeHandler:^(NSError *error) {
}];
- (void)newMessage:(MQTTSession *)session data:(NSData *)data onTopic:(NSString *)topic qos:(MQTTQosLevel)qos retained:(BOOL)retained mid:(unsigned int)mid
{
NSLog(@"data=%@",[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]);
// NSLog(@"%@",[NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil]);
}
4,服務端(php在ubuntu16.04環境下的服務器)
0)安裝了composer管理php包
1)composer init創建包配置文件composer.json
發現composer太難配置,棄之。。。。
簡單測試方法:
1,http://www.open-open.com/lib/view/open1384352514336.html
2,http://www.codes51.com/article/detail_2674947.html
任選其一,推薦第二個。
ubuntu安裝mqtt的ppa方法:
https://launchpad.net/~mosquitto-dev/+archive/ubuntu/mosquitto-ppa
php的無法運行起來,在ubuntu16.04找不到mosquitto.so,解決方案:
sudo pecl install Mosquitto-alpha
and created mosquitto.ini in
/etc/php5/mods-available/mosquitto.ini
and add this code
extension=mosquitto.so