数据流 Datastream

  • macOS

更新时间不可用

createDataStream:reliable:ordered:

创建数据流。

Objective-C
- (int)createDataStream:(NSInteger * _Nonnull)streamId
               reliable:(BOOL)reliable
                ordered:(BOOL)ordered NS_SWIFT_NAME(createDataStream(_:reliable:ordered:));

你可以调用该方法创建一个数据流,以提升数据传输的可靠性和顺序性。你可以在加入频道前或后调用该方法。

注: 每个用户在 AgoraRtcEngineKit 的生命周期内最多可创建五个数据流。离开频道时数据流会被销毁,如需继续使用需重新创建。如果你需要更全面的低延时、高并发、可扩展的实时消息和状态同步方案,建议使用实时消息。

调用时机

你可以在加入频道前或后调用该方法。

参数

参数名描述
streamId

输出参数,创建的数据流 ID。

reliable

设置接收端是否保证在五秒内收到数据流:

请确保 reliable 和 ordered 同时设置为 YES 或同时设置为 NO。

ordered

设置接收端是否按发送顺序接收数据流:

  • YES:接收端按发送顺序接收数据。
  • NO:接收端不按发送顺序接收数据。
表格内容超出当前宽度,可横向滚动查看更多列。

返回值

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

所属接口类

createDataStream:config:

创建一个数据流。

Objective-C
- (int)createDataStream:(NSInteger * _Nonnull)streamId
                  config:(AgoraDataStreamConfig * _Nonnull)config NS_SWIFT_NAME(createDataStream(_:config:));

与 createDataStream:reliable:ordered: 方法相比,该方法不保证数据传输的可靠性。如果数据包在发送后五秒内未被接收,SDK 会直接丢弃该数据包。你可以在加入频道前或加入频道后调用该方法。

注: 每个用户在 AgoraRtcEngineKit 的生命周期内最多可以创建五个数据流。离开频道时数据流会被销毁,如需使用需重新创建。如果你需要一个更全面的低延迟、高并发、可扩展的实时消息和状态同步解决方案,建议使用实时消息。

调用时机

你可以在加入频道前或加入频道后调用该方法。

参数

参数名描述
streamId

输出参数,创建的数据流 ID。

config

数据流的配置,详见 AgoraDataStreamConfig。

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

返回值

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

所属接口类

createDataStreamEx:reliable:ordered:connection:

创建一个数据流。

Objective-C
- (int)createDataStreamEx:(NSInteger * _Nonnull)streamId
                 reliable:(BOOL)reliable
                  ordered:(BOOL)ordered
               connection:(AgoraRtcConnection * _Nonnull)connection NS_SWIFT_NAME(createDataStreamEx(_:reliable:ordered:connection:));

废弃

该方法已废弃,请改用 createDataStreamEx:config:connection:。

你可以调用此方法创建一个数据流,以提升数据传输的可靠性和顺序性。

注: 每个用户在 AgoraRtcEngineKit 的生命周期中最多可创建五个数据流。离开频道时数据流会被销毁,如需使用需重新创建。

适用场景

该方法适用于多频道场景。

调用时机

请在调用 joinChannelExByToken 之后调用此方法。

参数

参数名描述
streamId

输出参数,创建的数据流 ID。

reliable

设置是否保证接收端在五秒内收到数据流:

注意:请确保 reliable 和 ordered 同时设置为 YES 或同时设置为 NO。

ordered

设置接收端是否按发送顺序接收数据流:

  • YES:接收端按发送顺序接收数据。
  • NO:接收端不按发送顺序接收数据。
connection

连接信息。详见 AgoraRtcConnection。

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

返回值

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

所属接口类

createDataStreamEx:config:connection:

创建一个数据流。

Objective-C
- (int)createDataStreamEx:(NSInteger * _Nonnull)streamId
                   config:(AgoraDataStreamConfig * _Nonnull)config
               connection:(AgoraRtcConnection * _Nonnull)connection NS_SWIFT_NAME(createDataStreamEx(_:config:connection:));

该方法不保证数据传输的可靠性。如果数据包在发送后五秒内未被接收,SDK 会直接丢弃该数据。

注: 每个用户在 AgoraRtcEngineKit 的生命周期内最多可以创建五个数据流。离开频道时数据流会被销毁,如需使用需重新创建。如果你需要一个更全面的低延迟、高并发、可扩展的实时消息和状态同步解决方案,建议使用实时消息。

适用场景

该方法适用于多频道场景。

调用时机

请在调用 joinChannelExByToken 方法后调用该方法。

参数

参数名描述
streamId

输出参数,创建的数据流 ID。

config

数据流的配置。详见 AgoraDataStreamConfig。

connection

连接信息。详见 AgoraRtcConnection。

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

返回值

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

所属接口类

sendStreamMessage:data:

发送数据流消息。

Objective-C
- (int)sendStreamMessage:(NSInteger)streamId
                    data:(NSData * _Nonnull)data NS_SWIFT_NAME(sendStreamMessage(_:data:));

调用 createDataStream:config: 后,你可以使用此方法向频道内的所有用户发送数据流消息。SDK 对此方法有以下限制:

  • 每个客户端在频道中最多可同时拥有 5 个数据通道,所有数据通道共享的总包比特率上限为 30 KB/s。
  • 每个数据通道每秒最多可发送 60 个数据包,每个数据包最大为 1 KB。

注: 如果你需要一个更全面的解决方案来实现低延迟、高并发和可扩展的实时消息传递和状态同步,建议使用实时消息。

参数

参数名描述
streamId

数据流 ID。你可以通过调用 createDataStream:config: 获取该 ID。

data

要发送的消息。

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

返回值

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

所属接口类

rtcEngine:receiveStreamMessageFromUid:streamId:data:

当本地用户收到远端用户发送的数据流时触发。

Objective-C
- (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine receiveStreamMessageFromUid:(NSUInteger)uid streamId:(NSInteger)streamId data:(NSData * _Nonnull)data NS_SWIFT_NAME(rtcEngine(_:receiveStreamMessageFromUid:streamId:data:));

当你收到远端用户通过调用 sendStreamMessage:data: 发送的数据流消息时,SDK 会触发该回调。

注: 如果你需要一个更全面的低延迟、高并发、可扩展的实时消息和状态同步解决方案,建议使用实时消息。

触发时机

该回调在你收到远端用户发送的数据流时被触发。

参数

参数名描述
engine
uid

发送该消息的远端用户 ID。

streamId

接收到的消息所属的数据流 ID。

data

接收到的数据内容,

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

所属接口类

rtcEngine:didOccurStreamMessageErrorFromUid:streamId:error:missed:cached:

当本地用户未收到远端用户发送的数据流时触发的回调。

Objective-C
- (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine didOccurStreamMessageErrorFromUid:(NSUInteger)uid streamId:(NSInteger)streamId error:(NSInteger)error missed:(NSInteger)missed cached:(NSInteger)cached NS_SWIFT_NAME(rtcEngine(_:didOccurStreamMessageErrorFromUid:streamId:error:missed:cached:));

当本地用户未能接收到远端用户通过调用 sendStreamMessage:data: 方法发送的数据流消息时,SDK 会触发该回调。

注: 如果你需要一个更全面的低延迟、高并发、可扩展的实时消息和状态同步解决方案,建议使用实时消息。

触发时机

该回调在本地用户未收到远端用户发送的数据流时被触发。

参数

参数名描述
engine

引擎对象,详见 AgoraRtcEngineKit。

uid

远端用户 ID。

streamId

接收消息所属的数据流 ID。

error

错误码。

missed

丢失的消息数量。

cached

数据流中断时缓存的传入消息数量。

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

所属接口类