APPSDK与云端长连接库说明

API概览

整体框图

名称 描述
获取长连接Url列表 getUrl
设置长连接模式 setRelayType
创建长连接 createLink
销毁长连接 destroyLink
销毁所有长连接 destroyAllLink
销毁所有长连接 getClientMap

1. 概述

封装了与云端长连接的接口。需要校验用户登录信息,长连接以userid划分,支持single/share两种模式。 single模式每个用户只支持一个连接,当创建新的长连接时云端回自动关闭上一个连接。 share模式则每个用户可以最多支持10个连接(以云端文档为准)。 每当连接模式切换时,都会关闭之前已经创建的所有连接。

一般建议将连接的创建放到application中进行,这样连接在app运行期间都会存活。也可以在服务中创建连接,来尽量保证连接存活。

云端文档

2. API 接口介绍

implementation 'com.ibroadlink:BLSWebSocketAndroid:1.0.2'
  // BLLet初始化
  BLLet.init(this, license, "", blConfigParam);
  
  // 初始化之后,获取lid
  String lid = BLLet.getLicenseId();
  
  // 初始化家庭管理接口, 如果使用集群服务,domain填null即可
  BLSWebSocket.init(lid, domain);
  
  // 添加登录成功回调函数
  BLAccount.addLoginListener(BLSWebSocket.getLoginListener());
    /**
     * 初始化
     *
     * @param licenseId 证书
     * @param domain    域名(可传空,默认使用appservice)
     */
    public static BLSWebSocketImpl init(String licenseId, String domain)

    /**
     * 初始化
     *
     * @param licenseId 证书
     * @param domain    域名(可传空,默认使用appservice)
     * @param relayType    #see {@link BLSWebSocketConstants.RELAY_TYPE}
     * @return 实例
     */
    public static BLSWebSocketImpl init(String licenseId, String domain, BLSWebSocketConstants.RELAY_TYPE relayType)
    
    /**
     * 初始化
     *
     * @param licenseId 证书
     * @param domain    域名(可传空,默认使用appservice)
     * @param relayType    #see {@link BLSWebSocketConstants.RELAY_TYPE}   
     * @param httpTimeout http请求超时时间,默认10秒
     * @return 实例
     */
    public static BLSWebSocketImpl init(String licenseId, String domain, BLSWebSocketConstants.RELAY_TYPE relayType, int httpTimeout)

2.1 相关接口

2.1.1 获取长连接Url列表

 /**
     *  获取长连接url
     */
    public static ResultWssUrl getUrl()

2.1.2 设置连接模式

  /**
     * 切换链接模式,支持single/share两种模式,默认为single模式。
     * 注: 每次切换都会close原来的所有链接
     * 
     * @param relayType
     * #see {@link BLSWebSocketConstants.RELAY_TYPE}
     */
    public static void setRelayType(BLSWebSocketConstants.RELAY_TYPE relayType)

2.1.3 创建连接

    /**
     *  创建长连接
     *  
     * @param url      长连接Url,从getUrl()接口返回的url列表中选择一个
     * @param heartBeatTimeInMs    心跳间隔,小于等于零表示不发送,最低1000ms, 不传的话默认30秒
     * @param callback 长连接回调,收发数据在这里实现
     */
    public static BLSWebSocketClient createLink(@NonNull String url, int heartBeatTimeInMs, BLSWebSocketCallback callback)  


   /**
     *  创建长连接
     *  
     * @param url      长连接Url,从getUrl()接口返回的url列表中选择一个
     * @param callback 长连接回调,收发数据在这里实现
     */
    public static BLSWebSocketClient createLink(@NonNull String url, BLSWebSocketCallback callback)
        
        
        
        
 public interface BLSWebSocketCallback {
 
    // 连接初始化完毕的回调,用户发送数据要在init完成之后再发送
    void onInit(ResultWssBase result);
    
    // 接收从云端推送的数据
    void onReceive(ResultWssBase result);

	// 连接关闭时的回调
    void onClose(String reason);
}

2.1.4 销毁连接

     /**
     *  销毁长连接
     *  
     * @param hashCode 长连接实例的hashCode, createLink()接口会返回实例
     */
    public static void destroyLink(@NonNull int hashCode) 

2.1.5 销毁所有连接

 /**
     *  销毁所有长连接
     */
    public static void destroyAllLink()

2.1.6 获取所有连接

  /**
     *  获取所有长连接
     */
    public static Map<Integer, BLSWebSocketClient> getAllLink()