0

我制作了一个 javascript 云应用程序,该应用程序在我的 iPad 应用程序的 webview 中的网页上运行,该应用程序通过 WebSocket 连接进行通信,但它仅在我在我的 http 站点上而不是 https 上时才有效,否则我会收到CFNetwork SSLHandshake failed (-9806)错误Xcode 和网站上说握手期间超时。

这是因为 iPad 上的网络服务器是在 HTTP 而不是 HTTPS 上运行的吗?

JAVASCRIPT 云应用

当连接到 iPad 上的 Web 服务器时,云中的这一部分适用于 HTTP。

var protocol = "ws";
if (this.useSecureConnection)
    protocol = "wss";
var url = protocol+'://localhost:'+this.port+'/service';
this.connection = new WebSocket(url);

Xcode iOS iPad 应用程序 (Objective-C)

我认为这是问题所在,所以我尝试启用 HTTPS,但我不确定要为“sslIdentityAndCertificates”方法创建什么。

- (BOOL)isSecureServer
{
     HTTPLogTrace();

     // Override me to create an https server...

     return YES;
}

/**
 * This method is expected to returns an array appropriate for use in kCFStreamSSLCertificates SSL Settings.
 * It should be an array of SecCertificateRefs except for the first element in the array, which is a SecIdentityRef.
**/
- (NSArray *)sslIdentityAndCertificates
{
    HTTPLogTrace();
    return nil;
}

我看到的其他一些帖子使用的 API 仅在 Mac 上可用,在 iOS 上不可用。

我也尝试了几种 ATS 权限组合。所有这些都导致 HTTPS 不允许 WebSocket 连接。

任何帮助是极大的赞赏!:)

4

0 回答 0