KeepAliveDaemon Class Reference
Inherits from | NSObject |
---|---|
Declared in | KeepAliveDaemon.h |
Overview
用于保持与服务端通信活性的Keep alive独立线程。
Keep alive的目的有2个:
1、防止NAT路由算法导致的端口老化:
路由器的NAT路由算法存在所谓的“端口老化”概念,请参见文章:http://www.52im.net/thread-209-1-1.html。
2、即时探测由于网络状态的变动而导致的通信中断(进而自动触发自动治愈机制):
此种情况可的原因有(但不限于):无线网络信号不稳定、WiFi与2G/3G/4G等同开情况下的网络切换、网络连接正常但宽带欠费被停机、手机系统的省电策略等。
本线程的启停,目前属于MobileIMSDK算法的一部分,暂时无需也不建议由应用层自行调用。
@author Jack Jiang(http://www.52im.net/thread-2792-1-1.html)) @version 1.0
+ sharedInstance
获取本类的单例。使用单例访问本类的所有资源是唯一的合法途径。
+ (KeepAliveDaemon *)sharedInstance
Discussion
获取本类的单例。使用单例访问本类的所有资源是唯一的合法途径。
Declared In
KeepAliveDaemon.h
+ setKEEP_ALIVE_INTERVAL:
Keep Alive 心跳时间间隔(单位:毫秒),默认15000秒(即15秒).
心跳间隔越短则保持会话活性的健康度更佳,但将使得在大量客户端连接情况下服务端因此而增加负载, 且手机将消耗更多电量和流量,所以此间隔需要权衡(建议为:>=3秒 且 <270秒(即4分半钟))!
说明:此参数用于设定客户端发送到服务端的心跳间隔,心跳包的作用是用来保持与服务端的会话活性( 更准确的说是为了避免客户端因路由器的NAT算法而导致路由器端口老化,相关知识见此文:http://www.52im.net/thread-281-1-1.html).
参定此参数的同时,也需要相应设置服务端的ServerLauncher.SESION_RECYCLER_EXPIRE参数。
+ (void)setKEEP_ALIVE_INTERVAL:(int)keepAliveTimeWithMils
Discussion
Keep Alive 心跳时间间隔(单位:毫秒),默认15000秒(即15秒).
心跳间隔越短则保持会话活性的健康度更佳,但将使得在大量客户端连接情况下服务端因此而增加负载, 且手机将消耗更多电量和流量,所以此间隔需要权衡(建议为:>=3秒 且 <270秒(即4分半钟))!
说明:此参数用于设定客户端发送到服务端的心跳间隔,心跳包的作用是用来保持与服务端的会话活性( 更准确的说是为了避免客户端因路由器的NAT算法而导致路由器端口老化,相关知识见此文:http://www.52im.net/thread-281-1-1.html).
参定此参数的同时,也需要相应设置服务端的ServerLauncher.SESION_RECYCLER_EXPIRE参数。
@param keepAliveTimeWithMils
Declared In
KeepAliveDaemon.h
+ getKEEP_ALIVE_INTERVAL
返回当前设置的Keep Alive 心跳时间间隔(单位:毫秒).
+ (int)getKEEP_ALIVE_INTERVAL
Discussion
返回当前设置的Keep Alive 心跳时间间隔(单位:毫秒).
@return
Declared In
KeepAliveDaemon.h
+ setNETWORK_CONNECTION_TIME_OUT:
收到服务端响应心跳包的超时间时间(单位:毫秒),默认(15 * 1000 + 5000)= 20000 毫秒(即20秒).
超过这个时间客户端将判定与服务端的网络连接已断开(此间隔建议为(KEEP_ALIVE_INTERVAL * 1) + 5 秒), 没有上限,但不可太长,否则将不能即时反映出与服务器端的连接断开(比如掉掉线时),请从能忍受的反应时长和即时性上做出权衡。
受的反应时长和即时性上做出权衡。
本参数除与{@link KeepAliveDaemon#KEEP_ALIVE_INTERVAL}有关联外,不受其它设置影响。
+ (void)setNETWORK_CONNECTION_TIME_OUT:(int)networkConnectionTimeout
Discussion
收到服务端响应心跳包的超时间时间(单位:毫秒),默认(15 * 1000 + 5000)= 20000 毫秒(即20秒).
超过这个时间客户端将判定与服务端的网络连接已断开(此间隔建议为(KEEP_ALIVE_INTERVAL * 1) + 5 秒), 没有上限,但不可太长,否则将不能即时反映出与服务器端的连接断开(比如掉掉线时),请从能忍受的反应时长和即时性上做出权衡。
受的反应时长和即时性上做出权衡。
本参数除与{@link KeepAliveDaemon#KEEP_ALIVE_INTERVAL}有关联外,不受其它设置影响。
@param networkConnectionTimeout
Declared In
KeepAliveDaemon.h
+ getNETWORK_CONNECTION_TIME_OUT
服务端响应心跳包的超时间时间(单位:毫秒).
+ (int)getNETWORK_CONNECTION_TIME_OUT
Discussion
服务端响应心跳包的超时间时间(单位:毫秒).
@return
Declared In
KeepAliveDaemon.h
– notifyConnectionLost
心跳线程算法已判定需要与服务器的“通信通道”断开,调用此方法将进入框架的“通信通道”断开处理逻辑。
本方法,目前属于MobileIMSDK框架算法的一部分,暂时无需也不建议由应用层开发者自行调用。
- (void)notifyConnectionLost
Discussion
心跳线程算法已判定需要与服务器的“通信通道”断开,调用此方法将进入框架的“通信通道”断开处理逻辑。
本方法,目前属于MobileIMSDK框架算法的一部分,暂时无需也不建议由应用层开发者自行调用。
Declared In
KeepAliveDaemon.h
– stop
无条件中断本线程的运行。
本线程的启停,目前属于MobileIMSDK算法的一部分,暂时无需也不建议由应用层自行调用。
- (void)stop
Discussion
无条件中断本线程的运行。
本线程的启停,目前属于MobileIMSDK算法的一部分,暂时无需也不建议由应用层自行调用。
Declared In
KeepAliveDaemon.h
– start:
启动线程。
无论本方法调用前线程是否已经在运行中,都会尝试首先调用 {@link #stop()}方法,以便确保线程被启动前是真正处于停止状态,这也意味着可无害调用本方法。
本线程的启停,目前属于MobileIMSDK算法的一部分,暂时无需也不建议由应用层自行调用。
- (void)start:(BOOL)immediately
Parameters
immediately |
true表示立即执行线程作业,否则直到 {@link #AUTO_RE$LOGIN_INTERVAL}执行间隔的到来才进行首次作业的执行 |
---|
Discussion
启动线程。
无论本方法调用前线程是否已经在运行中,都会尝试首先调用 {@link #stop()}方法,以便确保线程被启动前是真正处于停止状态,这也意味着可无害调用本方法。
本线程的启停,目前属于MobileIMSDK算法的一部分,暂时无需也不建议由应用层自行调用。
Declared In
KeepAliveDaemon.h
– isKeepAliveRunning
线程是否正在运行中。
- (BOOL)isKeepAliveRunning
Return Value
true表示是,否则线路处于停止状态
Discussion
线程是否正在运行中。
Declared In
KeepAliveDaemon.h
– updateGetKeepAliveResponseFromServerTimstamp
收到服务端反馈的心跳包时调用此方法:作用是更新服务端最背后的响应时间戳.
本方法的调用,目前属于MobileIMSDK算法的一部分,暂时无需也不建议由应用层自行调用。
- (void)updateGetKeepAliveResponseFromServerTimstamp
Discussion
收到服务端反馈的心跳包时调用此方法:作用是更新服务端最背后的响应时间戳.
本方法的调用,目前属于MobileIMSDK算法的一部分,暂时无需也不建议由应用层自行调用。
Declared In
KeepAliveDaemon.h
– setNetworkConnectionLostObserver:
设置网络断开事件观察者.
本方法的调用,目前属于MobileIMSDK算法的一部分,暂时无需也不建议由应用层自行调用。
- (void)setNetworkConnectionLostObserver:(ObserverCompletion)networkConnLostObserver
Discussion
设置网络断开事件观察者.
本方法的调用,目前属于MobileIMSDK算法的一部分,暂时无需也不建议由应用层自行调用。
@param networkConnectionLostObserver
Declared In
KeepAliveDaemon.h
– setDebugObserver:
Just for DEBUG.
- (void)setDebugObserver:(ObserverCompletion)debugObserver
Discussion
Just for DEBUG.
Declared In
KeepAliveDaemon.h