Skip to content

连接事件

连接事件用于监听网络连接状态变化和频道相关的事件。

connectionStatusChange

监听连接状态变化事件。

事件签名

typescript
connectionStatusChange: (status: AliRtcConnectionStatus, reason: AliRtcConnectionStatusChangeReason) => void

参数说明

参数类型描述
statusAliRtcConnectionStatus当前连接状态
reasonAliRtcConnectionStatusChangeReason状态变化原因

使用示例

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

参数说明

参数类型描述
codeAliRtcOnByeType离开原因,参考 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 事件时,应用应该:

  1. 立即停止音视频采集和发布
  2. 清理本地资源
  3. 向用户显示适当的提示信息
  4. 引导用户进行后续操作(如重新加入或退出应用)

连接状态详解

连接状态流转

正常的连接状态流转过程:

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;