sdk事件回调:

事件包含两大类:系统类和网络协议类
系统类事件一般因系统原因产生,例如系统初始化就绪完毕、网络连接断开产生错误等;
网络协议类事件则和应用层事件或网络请求协议有关,例如客户端自身向服务器发起了一个网络请求(通过调用sdk的方法产生)、所在频道有用户上下线或有新的用户加入频道或有用户离开频道、收到其他用户或系统的消息等。
  系统类事件:
  onready: function(), // 必须设置,在sdk初始化并登录成功后回调此事件,app可以在此事件中开始自己的业务逻辑
  onreconnect: function(), // 当网络断开自动重连重登录后回调,如果没有设置将自动调用onready
  //网络服务停止时事件通知,如果是网络原因,平台一般会有限度的延时自动重连并重新登录并调用onreconnect或onready
  onclose: function(),
  //sdk发生意外错误时事件通知,若发生此事件,一般可以报告给平台客服记录以便作为修正优化的排错依赖
  onerr: function(proto_name, err, seq),
  ---------------------------------------
  以下为网络协类事件:
  //用户信息回调事件,用户自身信息将由系统在初始化过程中自动获取并回调,其它用户信息需显示调用kfssdk.get_user_info([uid_list])获取
  onget_user_info:function(msg_body, err_obj, seq), // 注意参数为数组形式,即使只有一个
  //创建用户信息
  oncreate_user:function(msg_body, err_obj, seq),
  //修改用户信息
  onmodify_user_info:function(msg_body, err_obj, seq),
  //自定义的用户信息更新事件,同时包含get_user_info,create_user,modify_user_info事件均会触发此事件
  onuser_info:function(msg_body, err_obj, seq) //每次设置头像成功或在之前从未成功设置过头像前提下设置失败(包括用户取消操作)时回调此事件,参数表明设置成功与否
  onset_head_portrait:function(msg_body, err_obj, seq) //接收到私有消息事件回调,此事件因某个用户调用了kfssdk.send_private_msg产生,此事件与频道无直接关系
  onsend_private_msg:function(msg_body, err_obj, seq),
  //创建频道成功的回调事件,对应事件产生源:kfssdk.create_channel
  oncreate_channel:function(msg_body, err_obj, seq),
  //删除频道成功的回调事件,对应事件产生源:kfssdk.destroy_channel
  ondestroy_channel:function(msg_body, err_obj, seq),
  //成功收到频道消息回调事件,对应事件产生源:kfssdk.publish_channel_msg
  onpublish_channel_msg:function(msg_body, err_obj, seq),
  //订阅频道成功的回调事件,对应事件产生源:kfssdk.subscribe_channel
  onsubscribe_channel:function(msg_body, err_obj, seq),
  //取消订阅频道成功的回调事件,对应事件产生源:kfssdk.unsubscribe_channel
  onunsubscribe_channel:function(msg_body, err_obj, seq),
  //频道控制者改变的回调事件,每个频道均有且仅有一个当前频道的控制者,称为master,一般用来代替服务器作公共事务的裁决者(比如初始化频道内的业务场景数据(如地图系统)等),开始为创建频道用户;当master离开频道时,系统将自动重新从频道内的当前用户列表中选择一位设置为master,并将此变更通知给频道内剩余用户
  //成功收到频道修改回调事件,对应事件产生源:kfssdk.modify_channel及用户上下线、加入离开频道等
  onmodify_channel: function(msg_body, err_obj, seq)
  //新用户加入频道事件通知
  onuser_join: function(msg_body, err_obj, seq),
  //用户离开频道事件通知
  onuser_leave: function(msg_body, err_obj, seq),
  //频道用户上线事件通知
  onuser_online: function(msg_body, err_obj, seq),
  //频道用户下线事件通知,注意:根据kfssdk.create_channel参数的某些特性,用户下线将可能被系统直接强制离开频道
  onuser_offline: function(msg_body, err_obj, seq),
  // 注:以上onuser_join,onuser_leave,onuser_online,onuser_offline4个事件在onmodify_channel事件中对应_user_join,_user_leave,_user_online,_user_offline4个事件,为两种不同的处理事件模式,可任选其一处理,但若前面4个事件有注册,则在onmodify_channel事件将不会再被调用,而无论在注册事件中是否真正有处理
  
其它事件参见sdk协议-服务器响应
每个服务器响应对应一个sdk事件,以on+proto_name为名的回调函数模式作为sdk初始化参数对象注册,回调函数第一个参数为协议结构体对象msg_body,第二个参数为请求失败的错误对象err_obj,第三个数为请求时返回的请求序号seq
例如服务器响应协议:
message read_file {
  optional string _path = 1;
  optional bool _for_bin = 2;
  optional string _data = 3;
}
对应的注册sdk事件为:
kfssdk.init({
    ..., // 其它根据需要注册字段和事件
    onread_file: function(msg_body, err_obj) {
        if (err_obj) {
            alert("意外错误,读取文件失败!");
            return;
        }
        alert("读取文件成功,路径为:" + msg_body._path + "\r\n" + 
                "内容为:" + msg_body._data
            );
    },
});

注意:
kfssdk.init方法在整个app一次网络生命周期内只允许调用一次,所有全局性注册事件应在此方法调用中一次性注册,而不应一个一个注册;
若非全局性注册事件或希望使用动态注册模式,可以使用sdk方法:kfssdk.addEventListener,kfssdk.removeEventListener,kfssdk.removeAllEventListener系列方法
    

尊敬的各位同行,平台持续开发优化中,文档可能更新不及时,请以sdk实际实现代码接口为准,不便之处敬请见谅。