새로운 소켓 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을 구현하는 시도 내가 위의 예제와 같은 결과를 얻을.
주로 Chrome 앱의 쿠키 지원을 위해이 애플리케이션에 TCP를 사용해야합니다.
누구에게도 해결책이나 제안이 있습니까? 우리는 시행 착오로 많은 시간을 투자했으며 막 다른 골목을 치는 것처럼 보입니다.
'.bind()'를 사용하는 목적은 무엇입니까? – guest271314
코드 외부에 정의 된 코드가 여러 개 있습니다. 귀하의 질문에 완전한 [mcve]를 포함 시키십시오. – Makyen
이 질문은 이틀 전부터 [이전 질문] (http://stackoverflow.com/q/42520631/3773011)과 매우 유사합니다. 이 사본을 복제본으로 닫지 않으려면 질문을 포함시키고 두 가지의 차이에 대한 설명을 작성하십시오. 일반적으로 문제를 더 잘 설명하기 위해 이전 질문을 편집해야하고 새 질문을 게시하지 않아야합니다 (문제가 동일한 문제라고 가정 할 때 나에게 닮은 것으로 가정). – Makyen