使用C ++订阅AWS AppSync

问题描述 投票:0回答:1

我正在尝试使用从订阅查询到AWS appsync的预签名url返回来创建mqtt连接。

预签名的网址如下所示:wss://iotendpoint-ats.iot.us-west-2.amazonaws.com/mqtt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AAAAAAAAAAAA%2F20200203%2Fus-west-2%2Fiotdevicegateway%2Faws4_request&X-Amz-Date=20200203T190240Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=<signature>&X-Amz-Security-Token=<token>

当前,我正在尝试如下使用aws-crt-cpp库中的MQTTClient:

char * url = "wss://iotendpoint-ats.iot.us-west-2.amazonaws.com/mqtt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AAAAAAAAAAAA%2F20200203%2Fus-west-2%2Fiotdevicegateway%2Faws4_request&X-Amz-Date=20200203T190240Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=<signature>&X-Amz-Security-Token=<token>"

Aws::Crt::Mqtt::MqttClient *mqttClient = new Aws::Crt::Mqtt::MqttClient(bootstrap);

std::shared_ptr<Aws::Crt::Mqtt::MqttConnection> mqttConnection = mqttClient->NewConnection(url, 443, Aws::Crt::Io::SocketOptions(), true);

但是我收到以下错误:aws-c-io: AWS_IO_DNS_INVALID_NAME, Host name was invalid for dns resolution.

我可以使用curl打开websocket连接,因此我知道该URL有效。似乎该库无法处理websocket端点中的参数。是否有人在C ++中使用预签名的URL创建MQTT订阅有运气吗?

c++ mqtt aws-appsync
1个回答
0
投票

解决方案是在mqttConnection上设置一个WebsocketInterceptor。有关详细信息,请参见:https://github.com/awslabs/aws-crt-cpp/issues/97

© www.soinside.com 2019 - 2024. All rights reserved.