建立长连接
本文介绍客户端SDK的建立长连接步骤。
说明
建连接口必需要在初始化成功之后调用。
建连需要传递userId,该参数是SDK中用户的唯一标识。
API使用示例
iOS端接口使用示例:
//在做完上一步的初始化后,就可以开始建立长链接了,如下
NSString* userID = @"xxxx"; //用户ID只支持英文字母或者阿拉伯数字或者二者的组合
[[AIRBRoomEngine sharedInstance] loginWithUserID:userID];
//login过程中需要外部传入相关token,需要通过实现以下delegate来传入token
- (void) onAIRBRoomEngineRequestToken:(void (^)(AIRBRoomEngineAuthToken * _Nonnull))onTokenGotten {
// 从外部获取好了token,构造AIRBRoomEngineAuthToken对象,通过onTokenGotten回传给AIRBRoomEngine
AIRBRoomEngineAuthToken* token = [[AIRBRoomEngineAuthToken alloc] init];
token.accessToken = @"xxxx";
token.refreshToken = @"xxxx";
onTokenGotten(token);
}
//login成功,需要通过监听AIRBRoomEngineEventEngineLogined事件
- (void) onAIRBRoomEngineEvent:(AIRBRoomEngineEvent)event info:(NSDictionary *)info {
switch (event) {
case AIRBRoomEngineEventEngineLogined:
break;
default:
break;
}
}
//login失败,需要通过监听AIRBEngineFailedToLogin事件来获取具体情况
- (void) onAIRBRoomEngineErrorWithCode:(AIRBErrorCode)code errorMessage:(NSString *)msg {
switch (code) {
case AIRBEngineFailedToLogin:
NSLog(@"登录失败,%@", msg);
break;
default:
break;
}
}
Android端接口使用示例:
RoomEngine.getInstance().auth(userId, new Callback<Void>() {
@Override
public void onSuccess(Void data) {
// 建连成功, 然后执行后续的进房间等操作
Logger.i(TAG, "auth success");
}
@Override
public void onError(String errorMsg) {
// 建连失败
Logger.i(TAG, "auth fail: " + errorMsg);
}
});
Web端接口使用示例:
// uid即用户ID,标识用户身份,返回promise代表auth结果
// 需要在.then里进行或者使用await后进行房间操作,如进入房间等
RoomEngine.getInstance().auth(uid).then(() => {
// 在这里获取RoomChannel实例进行房间操作
});
// 或者使用await
await RoomEngine.getInstance().auth(uid);
// 在这里获取RoomChannel实例进行房间操作
Windows端接口使用示例:
auto meta_space = alibaba::meta_space::MetaSpace::GetInstance();
if (meta_space) {
alibaba::meta_space::TokenInfo token_info;
//1. 获取toekn 自行依据业务场景实现
GetLoginToken(token_info);
//2. 登录
std::string uid;
meta_space->Login(
uid, token_info,
[]() {
}, [](const alibaba::dps::DPSError& error_msg) {
});
}