XMPPFramework宗旨类介绍葡京在线开户

葡京在线开户 1

XMPPFramework结构

在进入下一步事先,先给我们讲讲XMPPFramework的目录结构,以便新手们更便于读懂小说。我们来探视下图:

葡京在线开户 2

固然这里有广大个目录,不过我们在开发中着力只关怀Core和Extensions那三个目录下的类。各类目录首要用来干嘛的?

  • Authentication:这一看名字就精晓与授权验证相关的。
  • Categories:重假设有些增添,尤其是NSXMLElement+XMPP增加是少不了的。
  • Core:那里是XMPP的焦点文件目录,大家最重点的目光依旧要放在那么些目录上。
  • Extensions:这么些目录是XMPP的扩充,用于扩张各类协商和各个独立的功用,其下每一种子目录都以呼应的三个独立的子功用。大家最常用到的法力有Reconnect、Roster、CoreDataStorage等。
  • Utilities:都以帮忙类,我们开发者不用关注那里。
  • Vendor:那一个目录是XMPP所引用的第叁方类库,如CocoaAsyncSocket、KissXML等,咱们也不用关爱那里。

阅读到此,对XMPPFramework的构造有所明白了呢!

AngularJS使用新的attributes扩充了HTML

概念知识

登录必要到账号,而所谓的账号其实正是用户唯一标识符(JID),在XMPP中选拔XMPPJID类来代表。那么,用户唯一标识(JID)有啥样组成?

JID一般由三局地构成:用户名,域名和能源名,格式为user@domain/resource,例如: test@example.com /Anthony托。对应于XMPPJID类中的五个属性user、domain、resource。 

假定没有设置主机名(HOST),则利用JID的域名(domain)作为主机名,而端口号是可选的,暗中认可是5222,一般也并未须求改动它。

AngularJS对单页面应用的支撑尤其好(SPAs)

XMPPStream类

咱俩要与服务器连接,就不能够不透过XMPPStream类了,它提供了众多的API和总体性设置,通过socket来促成的。我们看来Verdor目录了呢,包蕴了CocoaAsyncSocket那几个那多少个有名的socket编制程序库。XMPPStream类还服从并促成了GCDAsyncSocketDelegate代理,用于客户端与服务器交互。

 
@interface XMPPStream : NSObject <GCDAsyncSocketDelegate>
 

当大家创造XMPPStream对象后,我们必要安装代理,才能回调大家的代办方法,这几个是永葆multicast
delegate,也便是说对于一个XMPPStream对象,能够安装三个代理对象,个中协议是XMPPStreamDelegate:

 
- (void)addDelegate:(id)delegatedelegateQueue:(dispatch_queue_t)delegateQueue;
 

而当我们不愿意有个别XMPPStream对象继续接受到代办回调时,大家由此如此的格局来移除代理:

 
- (void)removeDelegate:(id)delegatedelegateQueue:(dispatch_queue_t)delegateQueue;
- (void)removeDelegate:(id)delegate;
 

接下去,大家要安装主机和端口,通过安装那两脾本性:

 
/**
* The server's hostname that should be used to make the TCP connection.
* 注释太长,简单说就是主机。这个属性是可选设置的,如果没有设置主机,默认会使用domain
*/
@property (readwrite, copy) NSString *hostName;
 
/**
* The port the xmpp server is running on.
* If you do not explicitly set the port, the default port will be used.
* If you set the port to zero, the default port will be used.
*
* The default port is 5222.
**/
@property (readwrite, assign) UInt16 hostPort;
 

XMPPStream有XMPPJID类对象作为品质,标识用户,因为我们继续很多操作都亟需到myJID:

 
@property (readwrite, copy) XMPPJID *myJID;
 

而治本用户在线状态的就交由XMPPPresence类了,它一律被作为XMPPStream的习性,组合到XMPPStream中,后续很多有关用户的操作是亟需到拍卖用户意况的:

 
/**
* Represents the last sent presence element concerning the presence of myJID on the server.
* In other words, it represents the presence as others see us.
*
* This excludes presence elements sent concerning subscriptions, MUC rooms, etc.
*
* @see resendMyPresence
**/
@property (strong, readonly) XMPPPresence *myPresence;
 

AngularJS分外容易学习

XMPPStreamDelegate

以此协议是可怜关键的,大家的居多根本操作都集中在这么些体协会议的代理回调上。它分为好三种档次的代办API,比如授权的、注册的、安全的等:

 
@protocol XMPPStreamDelegate
@optional
// 将要与服务器连接是回调
- (void)xmppStreamWillConnect:(XMPPStream *)sender;
 
// 当tcp socket已经与远程主机连接上时会回调此代理方法
// 若App要求在后台运行,需要设置XMPPStream's enableBackgroundingOnSocket属性
- (void)xmppStream:(XMPPStream *)sendersocketDidConnect:(GCDAsyncSocket *)socket;
 
// 当TCP与服务器建立连接后会回调此代理方法
- (void)xmppStreamDidStartNegotiation:(XMPPStream *)sender;
 
// TLS传输层协议在将要验证安全设置时会回调
// 参数settings会被传到startTLS
// 此方法可以不实现的,若选择实现它,可以可以在
// 若服务端使用自签名的证书,需要在settings中添加GCDAsyncSocketManuallyEvaluateTrust=YES
//
- (void)xmppStream:(XMPPStream *)senderwillSecureWithSettings:(NSMutableDictionary *)settings;
 
// 上面的方法执行后,下一步就会执行这个代理回调
// 用于在TCP握手时手动验证是否受信任
- (void)xmppStream:(XMPPStream *)senderdidReceiveTrust:(SecTrustRef)trust
                                      completionHandler:(void (^)(BOOL shouldTrustPeer))completionHandler;
 
// 当stream通过了SSL/TLS的安全验证时,会回调此代理方法
- (void)xmppStreamDidSecure:(XMPPStream *)sender;
 
// 当XML流已经完全打开时(也就是与服务器的连接完成时)会回调此代理方法。此时可以安全地与服务器通信了。
- (void)xmppStreamDidConnect:(XMPPStream *)sender;
 
// 注册新用户成功时的回调
- (void)xmppStreamDidRegister:(XMPPStream *)sender;
 
// 注册新用户失败时的回调
- (void)xmppStream:(XMPPStream *)senderdidNotRegister:(NSXMLElement *)error;
 
// 授权通过时的回调,也就是登录成功的回调
- (void)xmppStreamDidAuthenticate:(XMPPStream *)sender;
 
// 授权失败时的回调,也就是登录失败时的回调
- (void)xmppStream:(XMPPStream *)senderdidNotAuthenticate:(NSXMLElement *)error;
 
// 将要绑定JID resource时的回调,这是授权程序的标准部分,当验证JID用户名通过时,下一步就验证resource。若使用标准绑定处理,return nil或者不要实现此方法
- (id <XMPPCustomBinding>)xmppStreamWillBind:(XMPPStream *)sender;
 
// 如果服务器出现resouce冲突而导致不允许resource选择时,会回调此代理方法。返回指定的resource或者返回nil让服务器自动帮助我们来选择。一般不用实现它。
- (NSString *)xmppStream:(XMPPStream *)senderalternativeResourceForConflictingResource:(NSString *)conflictingResource;
 
// 将要发送IQ(消息查询)时的回调
- (XMPPIQ *)xmppStream:(XMPPStream *)senderwillReceiveIQ:(XMPPIQ *)iq;
// 将要接收到消息时的回调
- (XMPPMessage *)xmppStream:(XMPPStream *)senderwillReceiveMessage:(XMPPMessage *)message;
// 将要接收到用户在线状态时的回调
- (XMPPPresence *)xmppStream:(XMPPStream *)senderwillReceivePresence:(XMPPPresence *)presence;
 
/**
* This method is called if any of the xmppStream:willReceiveX: methods filter the incoming stanza.
*
* It may be useful for some extensions to know that something was received,
* even if it was filtered for some reason.
**/
// 当xmppStream:willReceiveX:(也就是前面这三个API回调后),过滤了stanza,会回调此代理方法。
// 通过实现此代理方法,可以知道被过滤的原因,有一定的帮助。
- (void)xmppStreamDidFilterStanza:(XMPPStream *)sender;
 
// 在接收了IQ(消息查询后)会回调此代理方法
- (BOOL)xmppStream:(XMPPStream *)senderdidReceiveIQ:(XMPPIQ *)iq;
// 在接收了消息后会回调此代理方法
- (void)xmppStream:(XMPPStream *)senderdidReceiveMessage:(XMPPMessage *)message;
// 在接收了用户在线状态消息后会回调此代理方法
- (void)xmppStream:(XMPPStream *)senderdidReceivePresence:(XMPPPresence *)presence;
 
// 在接收IQ/messag、presence出错时,会回调此代理方法
- (void)xmppStream:(XMPPStream *)senderdidReceiveError:(NSXMLElement *)error;
 
// 将要发送IQ(消息查询时)时会回调此代理方法
- (XMPPIQ *)xmppStream:(XMPPStream *)senderwillSendIQ:(XMPPIQ *)iq;
// 在将要发送消息时,会回调此代理方法
- (XMPPMessage *)xmppStream:(XMPPStream *)senderwillSendMessage:(XMPPMessage *)message;
// 在将要发送用户在线状态信息时,会回调此方法
- (XMPPPresence *)xmppStream:(XMPPStream *)senderwillSendPresence:(XMPPPresence *)presence;
 
// 在发送IQ(消息查询)成功后会回调此代理方法
- (void)xmppStream:(XMPPStream *)senderdidSendIQ:(XMPPIQ *)iq;
// 在发送消息成功后,会回调此代理方法
- (void)xmppStream:(XMPPStream *)senderdidSendMessage:(XMPPMessage *)message;
// 在发送用户在线状态信息成功后,会回调此方法
- (void)xmppStream:(XMPPStream *)senderdidSendPresence:(XMPPPresence *)presence;
 
// 在发送IQ(消息查询)失败后会回调此代理方法
- (void)xmppStream:(XMPPStream *)senderdidFailToSendIQ:(XMPPIQ *)iqerror:(NSError *)error;
// 在发送消息失败后,会回调此代理方法
- (void)xmppStream:(XMPPStream *)senderdidFailToSendMessage:(XMPPMessage *)messageerror:(NSError *)error;
// 在发送用户在线状态失败信息后,会回调此方法
- (void)xmppStream:(XMPPStream *)senderdidFailToSendPresence:(XMPPPresence *)presenceerror:(NSError *)error;
 
// 当修改了JID信息时,会回调此代理方法
- (void)xmppStreamDidChangeMyJID:(XMPPStream *)xmppStream;
 
// 当Stream被告知与服务器断开连接时会回调此代理方法
- (void)xmppStreamWasToldToDisconnect:(XMPPStream *)sender;
 
// 当发送了</stream:stream>节点时,会回调此代理方法
- (void)xmppStreamDidSendClosingStreamStanza:(XMPPStream *)sender;
 
// 连接超时时会回调此代理方法
- (void)xmppStreamConnectDidTimeout:(XMPPStream *)sender;
 
// 当与服务器断开连接后,会回调此代理方法
- (void)xmppStreamDidDisconnect:(XMPPStream *)senderwithError:(NSError *)error;
 
// p2p类型相关的
- (void)xmppStream:(XMPPStream *)senderdidReceiveP2PFeatures:(NSXMLElement *)streamFeatures;
- (void)

今昔就开端上学AngularJS吧!


至于本指南

  本指南目的在于救助您尽量神速而卓有功用地球科学习AngularJS。通过该指南你会学习到AngularJS的有个别基本特点,例如指令、表明式、过滤器、模块和控制器等。以及任何具有你必要精通的关于AngularJS的事物,如事件、DOM节点、表单、用户输入、数据证实、Http对象等。


每章的示范代码

  每一章都会给出用于演示的演示代码,你能够通过点击代码下方的按钮在开辟的页面中在线编辑并运营那么些代码以查看效果。

<script src="http://cdn.bootcss.com/angular.js/1.3.14/angular.js"></script>
<body>

<div ng-app="">

<p>Input something in the input box:</p>
    <p>Name : <input type="text" ng-model="name" placeholder="Enter name here"/></p>
<h1>Hello {{name}}</h1>

</div>

</body>

运行


您应有已经明白的始末

  在攻读AngularJS在此以前,你应有早就拥有了那个基本技能:

  • HTML
  • CSS
  • JavaScript

AngularJS的历史

  AngularJS 1.0在二〇一二年的时候就早已发表了。

  Miško
Hevery是谷歌(Google)的一名职工,他从二零一零年就初步AngularJS的支出工作。

  AngularJS的想法和思路特别好,该项目仍在持续个中,最近由谷歌(Google)提供官方技术帮助。


AngularJS示例代码

  本指南所蕴藏的装有示例代码均可在此地找到。

  AngularJS示例代码


AngularJS神速参考

  本指南开中学全部应用过的的指令和过滤器均可在此处找到。

  AngularJS飞速参考

下一章 –
AngularJS飞速入门指南02:介绍