당신은 올바른 길을 가고 있습니다. 나는 프로세스 간 통신을 가능하게하기 위해 KeeFox에서 nsISocketTransport와 nsISocketTransportService를 사용하지만 그림을 완성시키는 관련 리스너와 콜백 인터페이스입니다. a의 사용으로 인해 발생하는 보안 예외를 서버 포트에 연결하는 정기적 인 시도를하고 처리, https://github.com/luckyrat/KeeFox/blob/master/Firefox%20addon/KeeFox/modules/session.js
그것은 특정 포트에 보안 TCP 연결을 엽니 다 :
이 파일은 몇 가지 유용한 예제 코드를 포함해야 자체 서명 된 인증서.
난 당신이 정확한 상황에 따라 약간 다른 사람이 필요할 수 있지만 다음과 같은 인터페이스를 사용
이러한 인터페이스에 정의 된 콜백의 일부에 기본 세션 객체의 프로토 타입을 확장이 두번째 파일에 포함되어
QueryInterface: XPCOMUtils.generateQI([Ci.nsIBadCertListener2,
Ci.nsIInterfaceRequestor,
Ci.nsIStreamListener,
Ci.nsITransportEventSink,
Ci.nsIOutputStreamCallback])
https://github.com/luckyrat/KeeFox/blob/master/Firefox%20addon/KeeFox/modules/json.js
https://github.com/luckyrat/KeeFox/blob/master/Firefox%20addon/KeeFox/modules/KF.js 일부 타이머를 생성하고 연결 프로를 시작합니다 KeeFox 사용하는 특정 통신 프로토콜 (JSON-RPC)를 적용 아래 코드를 따라 가라.하지만 아마 그 파일을 자세히 살펴볼 필요는 없을 것이다.
this.KeePassRPC = new jsonrpcClient(); // defined in json.js and session.js
// make the initial connection to KeePassRPC
// (fails silently if KeePassRPC is not reachable)
this.KeePassRPC.connect();
// start regular attempts to reconnect to KeePassRPC
this.KeePassRPC.reconnectSoon();
관심있는 분은 원시 TCP 연결을 사용해야합니까? 그것은 4 년 전 KeeFox를 만들었을 때의 유일한 선택 이었지만, 현재 Web Socket 솔루션을 사용하고 있습니다. 그래서 여러분이 아직 선택하지 않았다면 그 옵션에 대해서 생각할 가치가 있습니다. 원시 소켓 인터페이스 주변에서 머리를 쓰는 것보다 훨씬 간단합니다.
감사 : 특히
, 이것은 내가 지금 HTTP 요청을하고 응답을 받기 위해 사용하는 코드입니다! 네 말이 맞아, 난 원시 소켓이 필요 없어. 나는 그렇게 생각했지만, 내 서버가 대신 POST 페이로드 데이터가있는 HTTP와 같은 요청을 원한다는 것을 알았으므로 지금은 대신 nsIHttpChannel을 사용하고 있습니다. –
그러나 앞으로 사용하기를 원하는 다른 서버 구성 요소는 원시 소켓 연결이 필요하므로 어쨌든이 구성 요소를 사용해야 할 수도 있습니다. HTTP가 아닌 연결에 일반 nsIChannel (또는 그 이상)을 사용하는 방법이 있습니까? –
네, 매우 비슷하지만 인증서에 대해 걱정할 필요가 없습니다. session.js의 101 줄은 비보안 연결에서 사용할 수있는 주석 처리 된 버전입니다. var transport = transportService.createTransport (null, 0, this.address, this.port, null); – Luckyrat