ESFramework 开发手册 -- Harmony(鸿蒙)版

   ESFramework 现在推出了纯血鸿蒙Harmony端版本,使用ArkTS开发,功能及API接口与其它端完全一致。而且,Harmony端可以与其它端(Windows、Linux、Android、iOS、Web)消息互通的。

   此篇开发手册,我们将着重介绍ESFramework Harmony端的三大功能:基础功能(登录、状态变化通知、联系人上下线通知)、收发消息、传送文件。

一.基础功能

  ESFramework 客户端的核心组件是 RapidPassiveEngine,在使用 ESFramework 的其它功能之前,首先需要初始化 RapidPassiveEngine。

1.初始化(登录) 

  RapidPassiveEngine引擎里的initialize方法,其签名如下:

/**
   * @param userID 用户的ID
   * @param password 用户密码
   * @param serverIP 服务器IP地址
   * @param serverPort 服务器端口
   * @param customizeHandler 用户自定义消息处理器
   * @param (loginResult)=>{} 登录结果回调
   */
initialize(userID,password,serverIP,serverPort,customizeHandler,(loginResult)=>{})

     customizeHandler 用于处理接收到的来自服务器或其它客户端的消息。 

   loginResult.LogonResult 为登录返回的状态码:

enum LogonResult {
  Succeed = 0,           // 登录成功
  Failed = 1,            // 登录失败
  HadLoggedOn = 2,       // 已经在其它地方登录
  VersionMismatched = 3  // 版本不匹配
}

2. 状态变化通知

  当客户端与服务端连接状态发生变化时,ESFramework 回调如下事件通知:

//当自己掉线时,触发事件
RapidPassiveEngine.addListener("connectionInterrupted",()=>{})

//当客户端触发重连机制时,触发事件
RapidPassiveEngine.addListener("connectionRebuildStart",()=>{})

//当客户端登录或者重连成功时,触发事件
RapidPassiveEngine.addListener("open",()=>{})

//当客户端与服务端正常断开时,触发事件
RapidPassiveEngine.addListener('close',()=>{});

  当自己被踢下线或被挤掉线时,将通过BasicOutter的如下回调得到通知:

//其他设备登录同一账号的监听
RapidPassiveEngine.BasicOutter.addEventListener("beingPushedOut",()=>{
                    ......
                    })
//被管理员踢下线的监听
RapidPassiveEngine.BasicOutter.addEventListener("beingKickedOut",()=>{
                   ......
                  })

3.联系人上下线通知

  当用户上/下线时,ESFramework 会通知相关联系人,会触发ContactsOutter接口的ContactsDeviceConnected或ContactsOffline事件。相关接口如下:

//联系人设备上线         
 /**
  *@param contactID 联系人ID
  * @param clientType 联系人设备类型
  */
RapidPassiveEngine.ContactsOutter.event["ContactsDeviceConnected"] = (contactID, clientType)=>{
     ...... 
} 

// 联系人下线
 /**
  * @param contactID 联系人ID
  */
RapidPassiveEngine.ContactsOutter.event["ContactsOffline"] = (contactID)=>{
     ......
};  

4. 查询基础信息

   BasicOutter提供了用户在线状态查询、设备管理和事件处理等基础功能,相关代码如下:

//通过BasicOutter获取所有在线用户
RapidPassiveEngine.BasicOutter.getAllOnlineUsers(callback)

//通过BasicOutter获取所有我的在线设备
RapidPassiveEngine.BasicOutter.getMyOnlineDevice(callback)

//通过BasicOutter获取某个用户是否在线
RapidPassiveEngine.BasicOutter.isUserOnline(userId,callback)

//通过BasicOutter获取某个用户的网络延迟
RapidPassiveEngine.BasicOutter.ping(callback,this.userId)

//通过BasicOutter踢出某个用户
RapidPassiveEngine.BasicOutter.kickOut(this.userId)

//通过BasicOutter预定事件
RapidPassiveEngine.BasicOutter.addEventListener(eventName,callback)

二.收发消息

1. 发送消息或查询

  客户端可以通过CustomizeOutter里的方法发送消息给其他用户,相关代码如下:

/**
   * @param informationType 自定义请求消息的类型
   * @param infobytes 请求消息
   * @param targetUserID 目标用户,为空时表示发送给服务端
   */
  send(informationType,infobytes,targetUserID)
/**
 * @param informationType 自定义请求消息的类型
 * @param infobytes 请求消息
 * @param callbackFn 如果服务器有返回应答,则回调此方法
 */
 query(informationType, infobytes, callbackFn)
/**
 * @param informationType 自定义请求消息的类型
 * @param blobContent 大的数据块信息
 * @param fragmentSize 分块传递时的分块大小
 * @param targetUserID 目标用户,为空时表示发送给服务端
 */
sendBlob(informationType,blobContent,fragmentSize,targetUserID)

2.处理接收到的消息

  客户端需要通过实现ESFramework里的ICustomizeHandler接口,并在调用initialize方法时传入即可自动处理接收到的消息。相关接口如下:

class customizeHandler implements ICustomizeHandler{

  /**
   * 处理来自其他用户的信息(包括大数据块信息)
   * @param sourceUserID 发出信息的用户ID.如果为null,表示信息来自服务端
   * @param informationType 自定义消息类型
   * @param info 信息
   */
  handleInformation(sourceUserID, informationType, info){
        ......
}
  /**
   * 处理来自服务端或其他在线用户的请求并返回应答信息
   * @param sourceUserID 发送请求信息的用户ID.如果为null,表示信息来自服务端
   * @param informationType 自定义消息类型
   * @param info 请求信息
   * @param callBackFun 回调方法
   */
  handleQuery(sourceUserID, informationType, info, callBackFun){
       ......
    }
}

三.文件传送

   客户端可以通过FileOutter接口发送文件给其他在线用户或者服务端,流程如下:

  1. 发送方如果要发起文件传输请求,则需要调用RapidPassiveEngine.FileOutter.beginSendFile(),调用完毕后,接收方则会在文件监听事件里进入fileRequestReceived()。
  2. 接收方同意接收文件则调用RapidPassiveEngine.FileOutter.beginReceiveFile(),拒绝接收文件则调用RapidPassiveEngine.FileOutter.rejectFile(),如果拒绝,则流程结束,否则进入下一步。
  3. 发送方在文件监听事件里进入fileResponseReceived(),此时发送方便知道接收方是否接收文件。
  4. 发送方发送文件数据,接收方接收文件数据,此时发送方与接收方都进入文件监听事件里的fileTransStarted()和fileSendedProgress()。
  5. 如果文件传送过程中,接收方或发送方掉线或者取消文件传送,则文件传送被中断,流程结束,此时发送方与接收方进入文件监听事件里的fileTransDisruptted()。
  6. 如果发送方重新发送同一个文件给接收方,将会触发文件续传,文件将会从上一个断开的地方继续发送。
  7. 之后如果传输过程正常,则到最后完成文件的传送。发送方与接收方进入文件监听事件里fileTransCompleted()。

1.客户端发送文件

   发送方通过FileOutter里的beginSendFile发送文件请求,并且返回此次传送任务的projectID,相关代码如下

// 准备发送 --- 发送文件请求
  /**
   * @param accepterID 文件接收者
   * @param file 要传输的文件
   * @param comment 说明
   * @param step 最大传输速度
   */
 const projectID = RapidPassiveEngine.FileOutter.beginSendFile(accepterID,file,comment,step)

  其中,file文件需要由鸿蒙的@ohos.file.picker获取,获取到文件的路径,名字,以及fd

2.客户端接收文件

   接收方通过FileOutter里的beginReceiveFile来同意接受文件,或者通过调用rejectFile来拒绝接收文件。相关接口如下:   

/**
   *同意接收文件 
   * @param projectID 接收文件的projectID
   * @param savePath 文件保存的路径目录
   * @param allowResume 是否打开文件续传,默认为true
   */
beginReceiveFile(projectID, savePath, allowResume)

/**
   * 拒绝文件传输
   * @param projectId 文件的projectID
   * @param cause 拒绝的原因
   */
  rejectFile(projectId,cause)

  当用户调用beginReceiveFile方法后,发送方便会收到同意接收的回复,此时ESFramework便会自动发送文件数据包,接收方也会自动处理接收到的文件数据包。

3.取消文件的发送

  发送方与接收方只需要通过调用FileOutter里的cancelTransfering便都可以在文件传输过程中取消文件的传输,接口定义如下:

/**
   * 取消文件传输
   * @param projectID 文件的projectID
   * @param cause 取消的原因,默认为空
   */
  cancelTransfering(projectID,cause)

4.文件相关事件通知

  ESFramework内置了文件消息的监听事件,只需要实现IFileEventListener接口并且实例化这个具体的实现类,便可以监听文件传送的相关通知,其定义如下所示:

export class addListerFile implements IFileEventListener{

 /**
   * 监听接收到的文件消息
   * @param file 文件内容
   */
  fileRequestReceived(file){
   .......
}

/**
   * 监听接收方是否同意接收文件
   * @param file 文件内容
   * @param accept 是否同意
   */
  fileResponseReceived(file, accept){
    ......
}

/**
   * 监听文件开始发送以及接收
   * @param project 文件内容
   */
  fileTransStarted(project){
    ......
}

  /**
   *监听文件是否是续传文件
   * @param project 文件内容
   */
  fileResumedTransStarted(project){
......
}
/** * 监听文件的发送/接收进度 * @param projectId 文件的projectID * @param totlaSize 文件的总大小 * @param transfered 文件的发送/接收进度 * @param userID 发送方ID */ fileSendedProgress(projectId,totlaSize,transfered,userID) { ...... } /** * 监听文件断开 * @param projectId 断开文件的projectID * @param disrupttedType 断开的自定义消息 * @param cause 断开的原因 */ fileTransDisruptted(projectId, disrupttedType, cause){ ...... } /** * 监听文件发送/接收成功 * @param projectId 文件的projectID */ fileTransCompleted(projectId){ ...... } }

5.文件续传

  如果文件传输因为某些原因中断(比如取消传送、或者是因为网络断开而中断),ESFramework 都会保存中断文件的进度。如果发送方重新发送同一个文件,ESFramework会续传该文件,而不是从头开始传送。

 四. 使用ESFramework.har包

  将ESFramework的har包引入到项目根目录下的entry/libs里,如果没有libs文件夹,可以自行创建一个。

  然后,修改entry/oh-package.json5里的dependencies,如图所示:              

       

    之后点击Sync Now ,等待同步完成后,便可以在项目中使用ESFramework。

五. 入门Demo

      ESFramework的入门Demo的鸿蒙版实现: ESFramework Demo -- 入门Demo鸿蒙版(Harmony)

      Demo的鸿蒙端可与现有的 Windows、Linux、Android、iOS、Web 端互通! 

 

导航

首页

官方网站

联系我们

站内搜索

OrayTalk 企业即时通讯系统

傲瑞通官网

详细说明

客户端下载

OrayMeeting 视频会议系统

详细说明

客户端下载

ESFramework 通信框架

详细说明

SDK与Demo下载

ESFramework FAQ

版本变更记录

OMCS 语音视频框架

详细说明

SDK与Demo下载

OMCS FAQ

版本变更记录

OVCS 视频会议Demo

详细说明

源码下载

傲瑞实用组件

SDK下载

H5Media 纯网页音视频交互

NPusher 推流组件

MCapture 语音视频采集组件

MFile 语音视频录制组件

MPlayer 语音视频播放组件

OAUS 自动升级系统

StriveEngine 轻量级的通信引擎

傲瑞组件 FAQ

授权

授权流程

产品选购指南

授权方案说明

授权SDK使用说明

其它

支持信创国产化

SDK使用技巧

联系我们