-
-
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.Connection
and it appears there are somedump
andwrap
functions that looked to be built for this sort of thing.id
and empty message payloads.