先看下代码:
try{
await SecureSocket.connect(remoteIP, remotePort,
            timeout: Duration(milliseconds: 500), onBadCertificate: (X509Certificate){
              return true;
            });
}catch(e){
      // timeout
    }
虽然设置了500ms的超时参数,但我刚刚遇到了超过500ms依然不抛超时异常的情况,原因未知。虽然这次是服务端故障,但客户端代码在字面理解上不应该出现超时不抛异常的情况。
于是只能再加个Future自身的timeout来解决:
try{
await SecureSocket.connect(remoteIP, remotePort,
            timeout: Duration(milliseconds: 500), onBadCertificate: (X509Certificate){
              return true;
            }).timeout(Duration(milliseconds: 500));
} on TimeoutException catch (e) {
// timeout
}catch(e){
      // timeout
    }
这样在500ms超时就会抛出TimeoutException。于是connect中的timeout参数就可有可无了。
