How do you plan to encode binary data in your JSON-based protocol? Base64? This will only increase the overhead.
While the human readability of JSON is nice, it has some serious flaws when the goal is to handle arbitrary data.
I have yet to decide what kind of protocol to use in my own vis editor[1], hence why I'm asking.