颤抖的网络和移动设备中基于MQTT证书的身份验证

时间:2020-04-28 19:28:57

标签: flutter mqtt flutter-web

我正在尝试在Flutter项目中使用MQTT来测试原型。而且我正在使用基于证书的自定义身份验证。

我正在使用mqtt_client软件包。 在连接SecurityContext之前,在Web中给出此错误不支持的操作:默认SecurityContext getter

下面是我的示例代码

  try {
      SecurityContext securityContext =
          SecurityContext(withTrustedRoots: false);
      securityContext.setTrustedCertificatesBytes(caCertificate);
      securityContext.useCertificateChainBytes(caCertificate);
      securityContext.setClientAuthoritiesBytes(clientCertificate,
          password: String.fromCharCodes(privateKey));
    } catch (e) {
      print(e);
    }

    _client = MqttClient('m.test.com', _identifier);
    _client.port = 8883;
    _client.keepAlivePeriod = 20;
    _client.onDisconnected = onDisconnected;
    _client.secure = true;
    //_client.securityContext = securityContext;
    _client.onBadCertificate = ((X509Certificate cert) => false);
    _client.logging(on: true);```



1 个答案:

答案 0 :(得分:0)

这对我有用,但是我不知道(动态a)在做什么...也许有人可以更详细地解释它?

void initializeMQTTClient() async {
    _client = MqttServerClient(_host, _identifier);
    _client.port = 8883; //1883
    _client.keepAlivePeriod = 20;
    _client.onDisconnected = onDisconnected;
    _client.secure = true; // false
    _client.logging(on: true);
    _client.securityContext = SecurityContext.defaultContext;
    // _client.useWebSocket = false;
    /// Add the successful connection callback
    _client.onConnected = onConnected;
    _client.onSubscribed = onSubscribed;
    _client.onBadCertificate = (dynamic a) => true;