2017-03-03 6 views
1

新しいソケットAPI(Chrome.sockets.tcp)を使用してChromeアプリケーションを実行しています。私は正常にすべてのHTTPリクエストを問題なく動作させることができました。私が遭遇した問題は、TLSハンドシェイクを伴うHTTPSログインです。 Visual StudioのC#(RestRequest)アプリケーションを作成しました。 HTTPSを使用して接続できます。 Wiresharkを使って、私はTLSv1を使って成功したコミュニケーションが達成されたことに気付きました。chrome.sockets.tcp.secureとTLSハンドシェイクが正常に動作しない

私はさまざまなソリューションを試し、以下のリンクで参照/実験し、解決策を考え出しました。

プラスより多くのリンク!私はテストアプリケーションをたくさん書いていますが、最初のハンドシェイク後にはすべてが行き詰まってしまいます。

次のコードシーケンスはハンドシェイクを完了したようですが、ログインポストを送信できません。ソケットがハンドシェイク後に台無しになっているようです。 (WireSharkは、すべてのcomがログインポストまで成功したことを示しています)。

var that = this; 
chrome.sockets.tcp.create({ 
    persistent: false, 
    name: "hc", 
    bufferSize: 8192 
}, function (createInfo) { 
    console.log("create info = " + JSON.stringify(createInfo)); 
    if (chrome.runtime.lastError) { 
     error('Unable to create socket: ' + chrome.runtime.lastError.message); 
    } 
    that._socketId = createInfo.socketId; 
    chrome.sockets.tcp.setPaused(that._socketId, true, function() { 
     chrome.sockets.tcp.connect(that._socketId, that._httpHost, that._httpPort, function (result) { 
      chrome.sockets.tcp.onReceive.addListener(that._onReceive.bind(this)); 
      chrome.sockets.tcp.onReceiveError.addListener(that._onReceiveError.bind(this)); 
      chrome.sockets.tcp.secure(that._socketId, function (secureResult) { 
       chrome.sockets.tcp.send(that._socketId, str2ab('POST/HTTP/1.1\r\nHOST: ' + that._httpHost + '\r\n\r\n'), function (sendResult) {}); 
      }); 
     }); 
    }); 
}); 

私はnmp forgeからTLSSocketを実装しようとしましたが、上記の例と同じ結果が得られます。

このアプリケーションでは、主にChromeアプリケーションのCookieサポート用にTCPを使用する必要があります。

誰にも解決策や提案はありますか?私たちは試行錯誤して何時間も試してきました。

+0

'.bind()'を使用する目的は何ですか? – guest271314

+0

コード内にコードの外に定義されたものが複数あります。あなたの質問に完全な[mcve]を含めてください。 – Makyen

+0

この質問は二日前からあなたの[前の質問](http://stackoverflow.com/q/42520631/3773011)に非常に似ています。これを複製しないようにしたいのであれば、質問を含めて編集し、その2つの違いについて説明してください。通常、あなたは問題をよりよく記述するために古い質問を編集し、新しい質問を投稿してはいけません(問題はほぼ同じですが、それは私に似ています)。 – Makyen

答えて

0

セキュリティ保護されたソケットを一時停止する必要があります。例えばchrome.sockets.tcp.setPaused(that._socketId, false, ...)

関連する問題