日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

xmpp 与服务器连接并身份验证成功

發布時間:2024/4/15 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 xmpp 与服务器连接并身份验证成功 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?*? XMPP的特點,所有的請求都是通過代理的方式實現的
?*
?*? 因為xmpp是經由網絡服務器進行數據通訊的,因此所有的,因此所有的請求都是提交給服務器處理
?*
?*? 服務器處理完畢止嘔,以代理的方式告訴客戶端處理結果
?*
?*? 官方推薦AppDelegate處理所有來自XMPP服務器的代理響應

AppDelegate.h

// // AppDelegate.h // xmpp練習 // // Created by tqh on 15/4/12. // Copyright (c) 2015年 tqh. All rights reserved. // #import <UIKit/UIKit.h> #import "XMPPFramework.h" @interface AppDelegate : UIResponder <UIApplicationDelegate>@property (strong, nonatomic) UIWindow *window;#pragma mark - XMPP相關的屬性和方法定義 /*** 全局xmppstream,只讀屬性*/ @property (strong,nonatomic,readonly) XMPPStream *xmppStream;@end

AppDelegate.m

// // AppDelegate.m // xmpp練習 // // Created by tqh on 15/4/12. // Copyright (c) 2015年 tqh. All rights reserved. // #import "AppDelegate.h"//提示,此處不遵守XMPPStreamDlegate協議,程序仍然能夠正常運行 @interface AppDelegate ()<XMPPStreamDelegate> /*** 設置xmppStream*/ - (void)setupStream;/*** 通知服務器用戶上線*/ - (void)goOneline;/*** 通知服務器用戶下線*/ - (void)goOffline;/*** 鏈接服務器*/ - (void)connect;/*** 與服務器斷開連接*/- (void)disConnect;@end@implementation AppDelegate- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // [self connect];return YES; }- (void)applicationWillResignActive:(UIApplication *)application {[self disConnect]; }- (void)applicationDidBecomeActive:(UIApplication *)application {[self connect]; }#pragma mark - XMPP相關方法#pragma mark - 設置XMPPStream- (void)setupStream {//避免被重復實例化if (_xmppStream == nil) {//1.實例化XMPPStream_xmppStream = [[XMPPStream alloc]init];//2.添加代理//因為所有網絡請求都是做基于網絡數據處理,跟UI界面無關,因此可以讓代理方法在其它線程中運行//從而提高程序的運行性能[_xmppStream addDelegate:self delegateQueue:dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)];}}#pragma mark - 通知服務器用戶上線- (void)goOneline {//1.實例化一個"展現",上線的報告XMPPPresence *presence = [XMPPPresence presence];//2.發送presence給服務器//服務器知道"我"上線后,只需要通知我的好友,而無需通知我,因此,次方法沒有回調 [_xmppStream sendElement:presence];}#pragma mark - 通知服務器用戶下線- (void)goOffline {NSLog(@"用戶下線");//1.實例化一個“展現”,下線報告XMPPPresence *presence = [XMPPPresence presenceWithType:@"unavailable"];//2.發送Presence給服務器,通知服務器客戶端下線 [_xmppStream sendElement:presence]; }#pragma mark - 連接- (void)connect {//1.設置XMPPStream [self setupStream];//2.設置用戶名,密碼,主機(服務器),連接時不需要passwordNSString *userName = @"tqhTest";NSString *hostName = @"127.0.0.1";//3.設置XMPPStream的JID和主機 // [_xmppStream setMyJID:[XMPPJID jidWithString:userName]]; //@127.0.0.1[_xmppStream setMyJID:[XMPPJID jidWithUser:userName domain:@"127.0.0.1" resource:nil]];[_xmppStream setHostName:hostName];//4.開始鏈接NSError *error = nil;[_xmppStream connectWithTimeout:10 error:&error];//提示:如果沒有制定JID和hostName,才會出錯,其他都不會出錯if (error) {NSLog(@"連接請求發送出錯:%@",error.localizedDescription);}else {NSLog(@"連接請求發送成功");} }#pragma mark - 斷開連接- (void)disConnect {//1.通知服務器下線 [self goOffline];//2.XMPPStream斷開連接 [_xmppStream disconnect]; }#pragma mark - 代理方法 #pragma mark - 連接完成(如果服務器地址不對,就不會調用此方法) - (void)xmppStreamDidConnect:(XMPPStream *)sender {NSLog(@"連接建立");//開始發送身份驗證請求NSError *error = nil;NSString *password = @"123456";[_xmppStream authenticateWithPassword:password error:&error];}#pragma mark - 身份驗證通過- (void)xmppStreamDidAuthenticate:(XMPPStream *)sender {NSLog(@"身份驗證通過"); }#pragma mark - 密碼錯誤,身份驗證失敗- (void)xmppStream:(XMPPStream *)sender didNotAuthenticate:(DDXMLElement *)error {NSLog(@"身份驗證失敗%@",error);} //<failure xmlns="urn:ietf:params:xml:ns:xmpp-sasl"><not-authorized></not-authorized></failure> @end

?

轉載于:https://www.cnblogs.com/hxwj/p/4420923.html

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的xmpp 与服务器连接并身份验证成功的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。