我正在使用新的套接字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鍛造實施TLSSocket,並得到了與上例相同的結果。
我們必須爲此應用程序使用TCP,主要用於Chrome應用程序中的Cookie支持。
有沒有人有解決方案或建議?我們在試驗和錯誤方面投入了很多時間,似乎我們已經陷入死衚衕。
使用'.bind()'的目的是什麼? – guest271314
您的代碼中有多個東西在您的代碼之外定義。請在你的問題中包含一個完整的[mcve]。 – Makyen
這個問題與兩天前的[上一個問題](http://stackoverflow.com/q/42520631/3773011)非常相似。如果你不希望這個問題關閉,那麼請編輯這個問題,以包含和解釋兩者之間的區別。通常情況下,您應該編輯較舊的問題以更好地描述問題,而不是發佈一個新問題(假設他們是關於同樣的問題,這是它看起來像我)。 – Makyen