2011-10-24 2 views
3

내 목표는 firefox-plugin에서 TCP 연결을 식별하는 것입니다.JavaScript를 통한 TCP 연결에 대한 액세스

모든 연결에 대해 고유 한 ID를 설정해야합니다. 내 질문은 가능한 경우 누군가가 HTTP 요청에서 TCP 연결 개체에 액세스하는 방법을 알고 있습니까? 그런 다음 고유 한 ID를 설정할 수 있으며 모든 요청/응답 쌍은 연결에 고유하게 설정됩니다.

+0

방화범이 보였습니까? 오픈 소스입니다. https://developer.mozilla.org/en/Firebug_internals –

+0

좋은 질문입니다. upvote 있습니다. –

+0

tcp 연결 개체에서 필요한 정보 유형을 포함하도록이 말을 다시 쓸 수 있습니까? 아니면 더 나은 아직 최종 목표를 설명하십시오. – skabbes

답변

1

질문에 대한 직접적인 답변을 모르겠지만 source code for Firebug을 살펴 보길 권장합니다. 적어도 네트워크 스택의 HTTP 요청 수준에 액세스 할 수있는 것 같습니다.

호프 행운을 빕니다!

+0

감사하지만 Firebug는 요청/응답 쌍 (모든 헤더)에 대한 정보 만 표시하지만 실행되는 연결에 대한 정보는 표시하지 않습니다. –

0

당신이 클라이언트 측 자바 스크립트에 대해 이야기한다고 가정하면이 기능을 달성하는 데 도움이되는 몇 가지 프로젝트가 있습니다.

  1. http://code.google.com/p/jssockets/ [플래시가 필요합니다]
  2. http://socket.io/

는 도움이되기를 바랍니다.

MDN에서
0

는 : HTTP 활동을 모니터링하는 방법

여기에 내가 내 자신의 FF 애드온 매우 비슷한 일을 자신의 샘플 코드

// Define a reference to the interface 
var nsIHttpActivityObserver = Components.interfaces.nsIHttpActivityObserver; 

var httpObserver = 
{ 
    observeActivity: function(aHttpChannel, aActivityType, aActivitySubtype, aTimestamp, aExtraSizeData, aExtraStringData) 
    { 
     if (aActivityType == nsIHttpActivityObserver.ACTIVITY_TYPE_HTTP_TRANSACTION) { 
     switch(aActivitySubtype) { 
      case nsIHttpActivityObserver.ACTIVITY_SUBTYPE_RESPONSE_HEADER: 
      // received response header 
      break; 
      case nsIHttpActivityObserver.ACTIVITY_SUBTYPE_RESPONSE_COMPLETE: 
      // received complete HTTP response 
      break; 
     } 
     } 
    } 
}; 

var activityDistributor = 
    Components.classes["@mozilla.org/network/http-activity-distributor;1"] 
    .getService(Components.interfaces.nsIHttpActivityDistributor); 
activityDistributor.addObserver(httpObserver); 
+0

나는 Firefox-Extension HttpFox를 사용하고 있는데이 코드는 이미 가지고있다.
하지만 누락 된 부분은 tcp 연결에 대한 정보입니다.
"keep-alive"및 "connection"헤더는 볼 수 있지만 연결 자체에는 매핑이 없습니다. –

0

입니다 . 연결과 관련된 nsiHttpChannel에 대한 참조를 원한다고 가정합니다. 그러나, 네이티브 코드에 의해 뒷받침 된 이후로 속성을 추가하고 유지할 수 있는지 확신 할 수 없습니다. 어느 것이 든 확실하지 않습니다. 하지만 너 수 있습니다 다른 곳에 nsiHttpChannel 저장하고 그런 식으로 ID를 유지.

다음은 문제를 해결하는 addon에서 http 트래픽을 모니터링하는 데 사용하는 간단한 코드입니다.

var Cc = Components.classes; 
var Ci = Components.interfaces; 

var MyHttpObserver = { 
    // must be exposed so that the ObserverService can register itself 
    observe: function(subject, topic, data) { 
     subject.QueryInterface(Ci.nsIHttpChannel); 
     if(topic === "http-on-modify-request"){ 
      // store 'subject' somewhere 
     } else if(topic === "http-on-examine-response"){ 
      // look up 'subject' it will be the same reference as before 
     } 
    }, 

    register: function() { 
     var observerService = Cc["@mozilla.org/observer-service;1"].getService(Ci.nsIObserverService); 
     observerService.addObserver(this, "http-on-modify-request", false); 
     observerService.addObserver(this, "http-on-examine-response", false); 
    }, 

    unregister: function() { 
     var observerService = Cc["@mozilla.org/observer-service;1"].getService(Ci.nsIObserverService); 
     observerService.removeObserver(this, "http-on-modify-request"); 
     observerService.removeObserver(this, "http-on-examine-response"); 
    }, 

    QueryInterface: function (aIID) { 
     if (aIID.equals(Ci.nsIObserver) || aIID.equals(Ci.nsISupports)){ 
      return this; 
     } 
     throw Components.results.NS_NOINTERFACE; 
    } 
}; 
+0

좋아 보이지만이 응답은 http-request/response로 제한되어 있으며 tcp 연결에 대한 정보는 제공하지 않습니다. 어쨌든 고마워! –

+0

나는이 질문을 이해하지 못한다고 생각한다. 아마도 그것을 바꿀 수 있을까? 어떤 종류의 정보가 필요합니까? 내가 아는 "tcp 연결"에 가장 가까운 것은 [nsiHttpChannel] (https://developer.mozilla.org/en/XPCOM_Interface_Reference/nsIHttpChannel)입니다. – skabbes