数据流 Datastream

  • Flutter

更新时间不可用

createDataStream

创建数据流。

Dart
Future<int> createDataStream(DataStreamConfig config);

注: 如你需要更加全面的低延时、高并发、可扩展的实时消息及状态同步解决方案,推荐使用实时消息。 在 RtcEngine 生命周期内,每个用户最多只能创建 5 个数据流。离开频道时数据流会被销毁,如需使用需要重新创建数据流。

调用时机

该方法在加入频道前后均可调用。

参数

参数名描述
config

数据流设置。详见 DataStreamConfig。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 创建的数据流的 ID:方法调用成功。
  • < 0:方法调用失败。详见错误码了解详情和解决建议。

所属接口类

createDataStreamEx

创建数据流。

Dart
Future<int> createDataStreamEx(
      {required DataStreamConfig config, required RtcConnection connection});

注: 如你需要更加全面的低延时、高并发、可扩展的实时消息及状态同步解决方案,推荐使用实时消息。 在 RtcEngine 生命周期内,每个用户最多只能创建 5 个数据流。离开频道时数据流会被销毁,如需使用需要重新创建数据流。

调用时机

该方法需要在 joinChannelEx 后调用。

参数

参数名描述
config

数据流设置。详见 DataStreamConfig。

connection

Connection 信息。详见 RtcConnection。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 创建的数据流的 ID:方法调用成功。
  • < 0:方法调用失败。详见错误码了解详情和解决建议。

所属接口类

sendStreamMessage

发送数据流。

Dart
Future<void> sendStreamMessage(
    {required int streamId, required Uint8List data, required int length});

调用 createDataStream 后,你可以调用该方法向频道内所有用户发送数据流消息。 SDK 对该方法的实现进行了如下限制:

  • 频道内每个客户端最多可以同时拥有 5 个数据通道,所有数据通道共用的总发包码率限制为 30 KB/s。
  • 每个数据通道每秒最多能发送 60 个包,每个包最大为 1 KB。

成功调用该方法后,远端会触发 onStreamMessage 回调,远端用户可以在该回调中获取接收到的流消息;若调用失败,远端会触发 onStreamMessageError 回调。

注: 如你需要更加全面的低延时、高并发、可扩展的实时消息及状态同步解决方案,推荐使用实时消息。

  • 该方法需要在加入频道后、且调用 createDataStream 创建数据通道之后调用。
  • 该方法仅适用于主播用户。

参数

参数名描述
streamId

数据流 ID。可以通过 createDataStream 获取。

data

待发送的数据。

length

数据长度。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

方法成功调用时,无返回值;方法调用失败时,会抛出 AgoraRtcException 异常,你需要捕获异常并进行处理。详见错误码了解详情和解决建议。

所属接口类

sendStreamMessageEx

发送数据流。

Dart
Future<void> sendStreamMessageEx(
      {required int streamId,
      required Uint8List data,
      required int length,
      required RtcConnection connection});

调用 createDataStreamEx 后,你可以调用本方法向频道内所有用户发送数据流消息。 SDK 对该方法的实现进行了如下限制:

  • 频道内每个客户端最多可以同时拥有 5 个数据通道,所有数据通道共用的总发包码率限制为 30 KB/s。
  • 每个数据通道每秒最多能发送 60 个包,每个包最大为 1 KB。

成功调用该方法后,远端会触发 onStreamMessage 回调,远端用户可以在该回调中获取接收到的流消息;若调用失败,远端会触发 onStreamMessageError 回调。

注:

  • 如你需要更加全面的低延时、高并发、可扩展的实时消息及状态同步解决方案,推荐使用实时消息。
  • 该方法需要在 joinChannelEx 后调用。
  • 请确保在调用该方法前,已调用 createDataStreamEx 创建了数据通道。

参数

参数名描述
streamId

数据流 ID。可以通过 createDataStreamEx 获取。

data

待发送的数据。

length

数据长度。

connection

Connection 信息。详见 RtcConnection。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

方法成功调用时,无返回值;方法调用失败时,会抛出 AgoraRtcException 异常,你需要捕获异常并进行处理。详见错误码了解详情和解决建议。

所属接口类

onStreamMessage

接收到对方数据流消息的回调。

Dart
final void Function(RtcConnection connection, int remoteUid, int streamId,
      Uint8List data, int length, int sentTs)? onStreamMessage;

该回调表示本地用户收到了远端用户调用 sendStreamMessage 方法发送的流消息。

注: 如你需要更加全面的低延时、高并发、可扩展的实时消息及状态同步解决方案,推荐使用实时消息。

参数

参数名描述
connection

Connection 信息。详见 RtcConnection。

remoteUid

发送消息的用户 ID。

streamId

接收到的消息的 Stream ID。

data

接收到的数据。

length

数据长度,单位为字节。

sentTs

数据流发出的时间。

表格内容超出当前宽度,可横向滚动查看更多列。

所属接口类

onStreamMessageError

接收对方数据流消息发生错误的回调。

Dart
final void Function(RtcConnection connection, int remoteUid, int streamId,
      ErrorCodeType code, int missed, int cached)? onStreamMessageError;

该回调表示本地用户未收到远端用户调用 sendStreamMessage 方法发送的流消息。

注: 如你需要更加全面的低延时、高并发、可扩展的实时消息及状态同步解决方案,推荐使用实时消息。

参数

参数名描述
connection

Connection 信息。详见 RtcConnection。

remoteUid

发送消息的用户 ID。

streamId

接收到的消息的 Stream ID。

code

错误码。详见 ErrorCodeType。

missed

丢失的消息数量。

cached

数据流中断时,后面缓存的消息数量。

表格内容超出当前宽度,可横向滚动查看更多列。

所属接口类