getIceServers method
Implementation
Future<void> getIceServers() async {
AwsClientCredentials awsCredentials = AwsClientCredentials(
accessKey: _config.credentials!.accessKeyId,
secretKey: _config.credentials!.secretAccessKey,
sessionToken: _config.credentials!.sessionToken,
);
KinesisVideo kinesisVideoClient = KinesisVideo(region: _config.region, credentials: awsCredentials);
GetSignalingChannelEndpointOutput getSignalingChannelEndpointOutput = await kinesisVideoClient.getSignalingChannelEndpoint(
channelARN: _config.channelARN,
singleMasterChannelEndpointConfiguration: SingleMasterChannelEndpointConfiguration(
role: ChannelRole.viewer,
protocols: [ChannelProtocol.https, ChannelProtocol.wss],
),
);
KVSChannels.KinesisVideoSignalingChannels service = KVSChannels.KinesisVideoSignalingChannels(
region: _config.region,
credentials: KVSChannels.AwsClientCredentials(
accessKey: _config.credentials!.accessKeyId,
secretKey: _config.credentials!.secretAccessKey,
sessionToken: _config.credentials!.sessionToken,
),
endpointUrl: getSignalingChannelEndpointOutput.resourceEndpointList?.firstWhere((element) => element.protocol == ChannelProtocol.https).resourceEndpoint,
);
KVSChannels.GetIceServerConfigResponse iceOutput = await service.getIceServerConfig(channelARN: _config.channelARN, clientId: getRandomClientId());
iceServers = [
{"urls": "stun:stun.kinesisvideo.${_config.region}.amazonaws.com:443"},
];
iceOutput.iceServerList?.forEach((element) {
iceServers!.add({"urls": element.uris, "username": element.username, "credential": element.password});
});
}