新しいソケット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を使用する必要があります。
誰にも解決策や提案はありますか?私たちは試行錯誤して何時間も試してきました。
'.bind()'を使用する目的は何ですか? – guest271314
コード内にコードの外に定義されたものが複数あります。あなたの質問に完全な[mcve]を含めてください。 – Makyen
この質問は二日前からあなたの[前の質問](http://stackoverflow.com/q/42520631/3773011)に非常に似ています。これを複製しないようにしたいのであれば、質問を含めて編集し、その2つの違いについて説明してください。通常、あなたは問題をよりよく記述するために古い質問を編集し、新しい質問を投稿してはいけません(問題はほぼ同じですが、それは私に似ています)。 – Makyen