- 
      
- 
        Save jasonLaster/2bad4dc4262a22b94c44 to your computer and use it in GitHub Desktop. 
| var dispatch = InspectorBackendClass.Connection.prototype.dispatch; | |
| InspectorBackendClass.Connection.prototype.dispatch = function() { | |
| if (arguments && arguments.length > 0) { | |
| var message = arguments[0]; | |
| var object = message ? JSON.parse(message) : {}; | |
| console.log.apply(console,['events', object]); | |
| } | |
| dispatch.apply(this, arguments); | |
| } | 
Following the logic in the source of dispatch which this patch calls; I was able to get it working with the following:
var dispatch = InspectorBackendClass.Connection.prototype.dispatch;
InspectorBackendClass.Connection.prototype.dispatch = function() {
    if (arguments && arguments.length > 0) {
        var message = arguments[0];
        var object = ((typeof message === "string") ? JSON.parse(message) : message);
        console.log.apply(console,['events', object]);
    }
    dispatch.apply(this, arguments);
}I also had success removing object altogether and passing message to dispatch, but wasn't sure of the stability of it.
@jasonLaster et al.. two things:
native dumpInspectorProtocolMessages
Instead of using this logging snippet, you can set InspectorBackendClass.Options.dumpInspectorProtocolMessages = true to log all messages to the console. It will log the JSON.stringify'd messages.
IMO, stringified is a bit messy, so I have a patch to clean it up and match this logging snippet's output: https://codereview.chromium.org/1606303003.
Updated protocol logging snippet:
As mentioned above, the snippet at the top of the gist is broken. I've evolved what @talitore did above and also instrumented the sendMessage method, which is key.
// This will log all protocol traffic to the console
const mainConnection = WebInspector.targetManager.mainTarget()._connection
const _dispatch = mainConnection.__proto__.dispatch;
const _sendMessage = mainConnection.__proto__.sendMessage;
mainConnection.__proto__.dispatch = function(message) {
    console.log('received: ', typeof message === "string" ? JSON.parse(message) : message);
    _dispatch.apply(this, arguments);
}
mainConnection.__proto__.sendMessage = function(message) {
    console.log('sending : ', message);
    _sendMessage.apply(this, arguments);
}This is worth using until https://codereview.chromium.org/1606303003 has landed.
cheers
updated again in july 2016.

jason... had a request..
I'd love to recommend using this instead of the protocol sniffing technique i doc'd here:
https://developer.chrome.com/devtools/docs/debugger-protocol#sniffing-the protocol
InspectorBackendClass.Connectionand it appears there are somedumpandwrapfunctions that looked to be built for this sort of thing.idand empty message payloads.