On one of my sites, I'm using websockets to do uploads. This is because it gives me better control over congestion issues (I can for instance do bandwidth shaping for each of my virtual connections).
However, sadly, I've discovered that in Chrome when a tab does not have focus, upload speeds dramatically go down, probably because of some scheduling policy in the browser.
If you want to programmatically address uploads (i.e., not with a simple PUT request), you have to somehow face this issue. I'm not sure if Uppy has this same problem or not (or if it even allows bandwidth shaping).
If you want a dog getting taught something : My parent's dog recently learned that when you're an old and nearly blind dog, running away mean getting lost.
( And he ran away after learning how to open the previously dog-proof garden's gate... It only took him 16 years. )
We tested a few commercial options out there (Filepicker most recently), but the issue consistently ended up being that uploading is such an important part of our app, that if it's down even for 20-30 minutes a month (which they all were), it's a big headache, and results in cancelled accounts.
We ended up plugging in the AWS JavaScrpt S3 SDK. We trust their uptime much more, and browser support is pretty widespread. It came with it's own headaches (namely, client side clocks being out of sync, and AWS rejecting uploads due to some security checks), but once we got everything figured out, it became incredibly stable.
It works by uploading files directly to your S3 bucket. Setup wasn't seamless (notably, setting things up with AWS Incognito), but in the end, we're incredibly happy we went this way.
We still use 3rd parties for resize images that are uploaded (namely, Cloudinary, which has been fantastic), but decoupling the upload logic from the usage logic has helped tremendously, and affords us reliability in that we control where the file is stored, how it's name, and are not tethered to a 3rd party (other than AWS).
You can just use Fine Uploader, which is an MIT licensed-library that handles direct-to-s3 uploads from the browser, with support for v2/v4 signatures, chunking, pause/resume uploads, image scaling/previews, drag and drop, folder uploads, etc, etc. http://fineuploader.com/
Thanks for sharing! Uppy author here. I think all (most?) of this AWS boilerplate will be awesome to have inside an S3 Upload plugin. Beyond that, Uppy will be able to integrate with different encoding backends, so my hope is you'll be able to throw away a lot of custom code when we are done. Or perhaps, we can use much of that as a starting point for our work? : )
However, sadly, I've discovered that in Chrome when a tab does not have focus, upload speeds dramatically go down, probably because of some scheduling policy in the browser.
If you want to programmatically address uploads (i.e., not with a simple PUT request), you have to somehow face this issue. I'm not sure if Uppy has this same problem or not (or if it even allows bandwidth shaping).