文档

断开长连接

更新时间:

本文介绍客户端SDK建立长连接前的断开长连接步骤。

说明

  • 为降低客户端不必要的性能和流量消耗,建议在不需要使用直播功能时手动调用断开长连接的操作。

API使用示例

iOS端接口使用示例

[[AIRBRoomEngine sharedInstance] logoutOnSuccess:^{
  NSLog(@"登出成功");
} onFailure:^(NSString * _Nonnull errorMessage) {
  NSLog(@"登出失败,%@", errorMessage)
}];

Android端接口使用示例

// 参考代码, 抽象出断连的任务管理器, 以实现自动的断连操作
class LogoutTaskManager {

    private static final String TAG = LogoutTaskManager.class.getSimpleName();

    private static final int LOGOUT_DELAY_TIME = 3 * 60 * 1000;

    private static final Runnable logoutTask = new Runnable() {
        @Override
        public void run() {
            Logger.i(TAG, "start invoke logout task");
            RoomEngine roomEngine = RoomEngine.getInstance();
            if (roomEngine.isLogin()) {
                Logger.i(TAG, "prepare done, start logout");
                // 断连的实际调用逻辑
                roomEngine.logout(null);
            }
        }
    };

    // 在直播页面的onDestroy中调用, 为防止频繁建连、断连,这里做了3分钟的延时处理
    static void prepareLogout() {
        Logger.i(TAG, "prepare logout");
        cancelLogout();
        if (RoomEngine.getInstance().isLogin()) {
            // 离开直播间超过3分钟, 自动执行断连操作
            ThreadUtil.postDelay(LOGOUT_DELAY_TIME, logoutTask);
        }
    }

    // 在直播页面的onCreate中调用, 用来取消自动断连的逻辑
    static void cancelLogout() {
        Logger.i(TAG, "cancel logout");
        ThreadUtil.cancel(logoutTask);
    }
}

Web端接口使用示例

RoomEngine.getInstance().logout(); // 返回promise

Windows端接口使用示例

auto meta_space = alibaba::meta_space::MetaSpace::GetInstance();
meta_space->Logout(
uid, []() { },
[](const alibaba::dps::DPSError& error_msg) { });
  • 本页导读 (1)
文档反馈