我正在使用新的Socket API(Chrome.sockets.tcp)执行Chrome应用程序。我已经能够成功地使所有HTTP请求正常工作。我遇到的问题是使用TLS握手进行HTTPS登录。我们创建了一个Visual Studio C#(RestRequest)应用程序。我们可以使用HTTPS进行连接。使用Wireshark,我注意到使用TLSv1实现了成功的通信。
我尝试了各种解决方案,并通过以下链接进行了参考/实验,并尝试提出解决方案。
还有更多链接!我已经编写了一堆测试应用程序,但在初始握手之后,所有应用程序都达到了死胡同。
以下代码序列似乎完成了握手,但我无法发送登录帖子。似乎套接字在握手后搞砸了。 (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,我得到的结果与上面的示例相同。
我们必须为此应用程序使用TCP,主要用于Chrome应用程序中的cookie支持。
有人有解决方案或建议吗?我们花了很多时间进行反复试验,似乎已经走到了尽头。
答案 0 :(得分:0)
您需要在插座固定后取消插槽。例如chrome.sockets.tcp.setPaused(that._socketId, false, ...)