Appearance
连接事件
连接事件用于监听网络连接状态变化和频道相关的事件。
connectionStatusChange
监听连接状态变化事件。
事件签名
typescript
connectionStatusChange: (status: AliRtcConnectionStatus, reason: AliRtcConnectionStatusChangeReason) => void参数说明
| 参数 | 类型 | 描述 |
|---|---|---|
| status | AliRtcConnectionStatus | 当前连接状态 |
| reason | AliRtcConnectionStatusChangeReason | 状态变化原因 |
使用示例
javascript
engine.on('connectionStatusChange', (status, reason) => {
console.log('连接状态变化:', status, reason);
switch (status) {
case AliRtcEngine.AliRtcConnectionStatus.AliRtcConnectionStatusConnecting:
console.log('正在连接...');
break;
case AliRtcEngine.AliRtcConnectionStatus.AliRtcConnectionStatusConnected:
console.log('连接成功');
break;
case AliRtcEngine.AliRtcConnectionStatus.AliRtcConnectionStatusDisconnected:
console.log('连接断开');
break;
case AliRtcEngine.AliRtcConnectionStatus.AliRtcConnectionStatusReconnecting:
console.log('重新连接中...');
break;
case AliRtcEngine.AliRtcConnectionStatus.AliRtcConnectionStatusFailed:
console.log('连接失败');
break;
}
});bye
被服务器踢出/会议结束频道的消息。
事件签名
typescript
bye: (code: AliRtcOnByeType) => void参数说明
| 参数 | 类型 | 描述 |
|---|---|---|
| code | AliRtcOnByeType | 离开原因,参考 AliRtcOnByeType 枚举值 |
使用示例
javascript
engine.on('bye', code => {
console.log('收到bye消息,原因:', code);
switch (code) {
case AliRtcEngine.AliRtcOnByeType.AliRtcOnByeKickOut:
console.log('被服务器踢出');
showKickOutMessage();
break;
case AliRtcEngine.AliRtcOnByeType.AliRtcOnByeChannelTerminated:
console.log('频道已结束');
showChannelTerminatedMessage();
break;
case AliRtcEngine.AliRtcOnByeType.AliRtcOnByeUserReplace:
console.log('用户被替换');
showUserReplaceMessage();
break;
default:
console.log('其他原因离开频道');
showGeneralByeMessage();
break;
}
// 清理资源并退出频道
cleanupAndLeaveChannel();
});
function cleanupAndLeaveChannel() {
// 停止本地音视频
engine.stopPreview();
engine.muteLocalMic(true);
engine.muteLocalCamera(true);
// 离开频道
engine.leaveChannel();
// 跳转到离开页面或显示相应提示
redirectToLeavePage();
}处理建议
收到 bye 事件时,应用应该:
- 立即停止音视频采集和发布
- 清理本地资源
- 向用户显示适当的提示信息
- 引导用户进行后续操作(如重新加入或退出应用)
连接状态详解
连接状态流转
正常的连接状态流转过程:
Init → Connecting → Connected网络异常时的状态流转:
Connected → Disconnected → Reconnecting → Connected连接失败时的状态流转:
Init → Connecting → Failed状态处理建议
1. 连接中状态 (Connecting)
javascript
case AliRtcEngine.AliRtcConnectionStatus.AliRtcConnectionStatusConnecting:
// 显示连接中的 UI 提示
showConnectingIndicator();
break;2. 已连接状态 (Connected)
javascript
case AliRtcEngine.AliRtcConnectionStatus.AliRtcConnectionStatusConnected:
// 隐藏连接提示,启用音视频功能
hideConnectingIndicator();
enableAudioVideoControls();
break;3. 断开连接状态 (Disconnected)
javascript
case AliRtcEngine.AliRtcConnectionStatus.AliRtcConnectionStatusDisconnected:
// 显示断开连接提示
showDisconnectedMessage();
// 禁用音视频控制
disableAudioVideoControls();
break;4. 重连中状态 (Reconnecting)
javascript
case AliRtcEngine.AliRtcConnectionStatus.AliRtcConnectionStatusReconnecting:
// 显示重连提示
showReconnectingIndicator();
break;5. 连接失败状态 (Failed)
javascript
case AliRtcEngine.AliRtcConnectionStatus.AliRtcConnectionStatusFailed:
// 显示连接失败提示,提供重试选项
showConnectionFailedDialog();
break;