Protocol buffers can be very useful, but are not a silver bullet. https://protobuf.dev/overview/ shows a list of use case where protocol buffers are less optimal.
It's worth noting that protocol buffers are *NOT* faster in JS than in other languages. You can often get faster results from compressed json than protobuf and other binary wire formats.
You might be able to use a binary extension/module for Node/Deno that can access the direct sockets to handle the encode/decode in a lower level language (such as rust).