ios MQTT協議的實際應用


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

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM