Net Panel Remoting
From FirebugWiki
This page is summarizing support for remote HTTP monitoring in Firebug.
Contents |
[edit] Resources
- Net Panel Architecture Review
- Remote Debugging Protocol (part of JSD2 effort)
- HTTP Monitor
[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.
- There should be a way to get the list of opened tabs on the server
- It should be able to subscribe/unsubscribe to/from a tab
- The client should be able to be notified when the tab is navigated to a new URL or refreshed
- Collected HTTP data should be sent in chunks (e.g. every 300 ms, the timeout should be customizable)
- It should be possible to specify what data should be sent to the client by default
- There should be a way how to request data from the server on demand (e.g. response bodies)
- It should be also possible to specify what data should be actually cached on the server (i.e. what is monitored)
- 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.