3 ms·
I'm working on this problem now. I'm still building the lower layers, which are: - An RPC mechanism (not built yet) - A bi-directional multiplexing stream pro
by kstenerud 7y ago
I'm working on this problem now. I'm still building the lower layers, which are:
- An RPC mechanism (not built yet)
- A bi-directional multiplexing stream protocol [1] (mostly there)
- A general purpose binary encoding mechanism [2] (I've gotten bogged down with this for the past few months, but I can finally see the light at the end of the tunnel!)
The idea is to get these lower layers finished so that I can build all of my data communications related projects on top of them. One of those is a general-purpose file access system that I can build actual products on top of, such as file managers, remote filesystems, streaming services, synchronization, etc. I'm rebuilding everything underneath because the existing protocols are too chatty and bloated, not modular enough, don't work with encryption, or have weird requirements (like NFS requiring kernel integration for example, or they're restricted to the local net, etc).
[1] https://github.com/kstenerud/streamux/blob/master/streamux-specification.md https://github.com/kstenerud/streamux/blob/master/streamux-s...
[2] https://github.com/kstenerud/concise-encoding https://github.com/kstenerud/concise-encoding
- aisofteng 7y agoImpressive effort. I’m sure you looked at it, so I’m curious why not use gRPC? To avoid HTTP?
- kstenerud 7y agoI've looked at all of the protocols out there, and the short reason list is one or more of: * they're too chatty. * They waste too much on overhead. * their bidirectional support is poor. * Their asynchronous support is poor. * They can't multiplex across multiple connections.