Net Panel Remoting

From FirebugWiki

Revision as of 09:41, 29 April 2012 by Honza (Talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

This page is summarizing support for remote HTTP monitoring in Firebug.

Contents

[edit] Resources

[edit] HTTP Monitor

Check out HTTP Monitor to connect a remote Firefox/Fennec instances. The user can select an existing tab opened on the remote browser and monitor its HTTP traffic.

[edit] FBTrace

In order to see/filter logs on the server and client you should use following options in the FBTrace console.

  • Server: ERRORS, ACTIVITYOBSEVER, NETACTOR, NET_EVENTS
  • Client: ERRORS, ACTIVITYOBSEVER, REMOTEBUG, REMOTENETMONITOR

[edit] Remote Protocol

The remote HTTP monitor uses and extends the Remote Debugging Protocol designed for Firefox.

Here is an example of a typical communication between the server and the client (described from the client perspective).

// Introduction packet, received just after connect to the server
RECEIVED {"from":"root","applicationType":"browser","traits":[]}
 
// Request list of opened tabs on the server
SENT: {"to":"root","type":"listTabs"}
 
// The client has a list of tabs
RECEIVED: {"from":"root","selected":0,"tabs":
    [{"actor":"conn2.tab2","title":"Google","url":"http://www.google.com/"}]}
 
// Attach to a tab.
SENT: {"to":"conn2.tab2","type":"attach"}
 
// Confirmation, client is now attached to the tab
RECEIVED: {"type":"tabAttached","threadActor":"conn2.context3","from":"conn2.tab2"}
 
// Request network-monitor actor
SENT: {"to":"conn2.tab2","type":"networkMonitorActor"}
 
// Network-monitor actor (ID) retrieved
RECEIVED: {"actor":"conn2.networkMonitor4","from":"conn2.tab2"}
 
// Subscribe to the network-monitor
SENT: {"to":"conn2.networkMonitor4","type":"attach"}
 
// Confirmation, the client is now subscribed for network events
RECEIVED: {"from":"conn2.networkMonitor4"}
 
// Selected tab has been navigated to new URL (or refreshed)
RECEIVED {"from":"conn2.tab2","type":"tabNavigated","url":"http://www.google.com/"}
 
// Selected tab executed HTTP request(s)
RECEIVED: {"type":"notify","from":"conn2.networkMonitor4","serial":1,"files":[<list-of-requests>]}
  • <list-of-requests>: Represents a list of executed requests in HAR format.
  • Some packets can use an additional error field in case of unexpected errors. The exact structure of the field should be provided.

[edit] HTTP Monitor Remote Protocol Requirements

This section summarizes requirements for remote protocol.

  1. There should be a way to get the list of opened tabs on the server
  2. It should be able to subscribe/unsubscribe to/from a tab
  3. The client should be able to be notified when the tab is navigated to a new URL or refreshed
  4. Collected HTTP data should be sent in chunks (e.g. every 300 ms, the timeout should be customizable)
  5. It should be possible to specify what data should be sent to the client by default
  6. There should be a way how to request data from the server on demand (e.g. response bodies)
  7. It should be also possible to specify what data should be actually cached on the server (i.e. what is monitored)
  8. The server should cache all data until:
    • (a) it is sent to the client (do we need support for more subscribed clients at the same time?)
    • (b) the tab is refreshed or navigated away (what about persistence across reloads?)

[edit] Open Question

  • In case the networkMonitorActor is the only network-related actor, it can be renamed to networkActor.
Personal tools