我有一个使用Let的加密CA的节点服务器,它托管在zeit.now上。 客户端使用react-native开发。 我尝试使用websockets连接到它。
在iOS和更新的Android版本(API> 20)上,它成功连接。
在较旧的Android版本(在模拟器和实际设备上)上运行时,它永远不会连接。
我尝试使用较旧的Android版本连接到不使用Let的加密CA的服务器(但是使用来自其他提供商的ssl - 托管在heroku上),并且它也成功连接。 / p>
所以我相信旧的Android版本和让我们加密证书有问题。
有人可以帮忙吗?我已经失去了5天研究这个问题,而且我对JAVA了解不多。
编辑: 我尝试使用websocket连接
ws.onerror = (e) => {
// an error occurred
console.log(e.message);
};
此日志:
Connection closed by peer
和这个方法:
ws.onclose = (e) => {
// connection closed
console.log(e.code, e.reason);
};
日志:
undefined, undefined
答案 0 :(得分:0)
我修好了!见comment。 基本上我需要安装与Google Play服务捆绑在一起的最新安全修复程序
答案 1 :(得分:0)
我通过向Gradle添加以下依赖项来解决此问题:
implementation 'com.google.android.gms:play-services-safetynet:17.0.0'
然后致电
public void onCreate() {
super.onCreate();
try {
ProviderInstaller.installIfNeeded(this);
} catch (GooglePlayServicesRepairableException e) {
// Don't forget exception handling!
} catch (GooglePlayServicesNotAvailableException e) {
// Do something clever
}
SoLoader.init(this, /* native exopackage */ false);
initializeFlipper(this, getReactNativeHost().getReactInstanceManager());
}