0

WebSocket接続を介して通信するiPadアプリのWebビューのWebページで実行されるjavascriptクラウドアプリを作成しましたが、httpsではなくhttpサイトにいる場合にのみ機能します。そうしないと、CFNetwork SSLHandshake failed (-9806)エラーが発生しますXcode および Web サイトでは、ハンドシェイク中にタイムアウトと表示されます。

これは、iPad の Web サーバーが HTTPS ではなく HTTP で実行されているためですか?

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;
}

私が見た他の投稿のいくつかは、iOS ではなく Mac でのみ利用可能な API を使用しています。

ATS アクセス許可の組み合わせもいくつか試しました。すべての結果、HTTPS は WebSocket 接続を許可しませんでした。

どんな助けでも大歓迎です!:)

4

0 に答える 0