It turned out, however, that the simple flow control he implemented was not adaptive enough to simultaneously accommodate both low-latency/low bandwidth and high-latency/high-bandwidth connection.
For resumeable uploads to work efficiently for both cases, we implemented TCP/IP-style congestion control (e.g. slow start window size scaling and exponential back-off retry timeout), but over http POST requests instead of UDP packet sends.
Comments
Can you provide a little more detail on how it's implemented?
Are you using resumable.js[1] or is it a custom implementation?
[1] https://github.com/23/resumable.js
Sure, let me give some further implementation detail.
We were inspired by https://github.com/dmitry-dedukhin/lightweight-uploader, particularly the js implementation from Dmitry.
It turned out, however, that the simple flow control he implemented was not adaptive enough to simultaneously accommodate both low-latency/low bandwidth and high-latency/high-bandwidth connection.
For resumeable uploads to work efficiently for both cases, we implemented TCP/IP-style congestion control (e.g. slow start window size scaling and exponential back-off retry timeout), but over http POST requests instead of UDP packet sends.