It sounded interesting until: Allow www.sharedrop.io to run "Adobe Flash"?
Then:
We're really sorry, but your browser is not supported.
Please use the latest Chrome for Desktop or Android or Opera.
Firefox support is coming soon!
So basically, this is a webkit app, not a HTML5 app?
At this moment the app works only in Chrome and Opera, because Firefox doesn't support HTML5 FileSystem API. There's a polyfill for that, but we had some issues with it, so we've decided to release it anyway. We'll continue working on Firefox support. The whole source code is available on GitHub (https://github.com/cowbell/sharedrop), so anyone can help.
This reminds me of how awfully behind IE is in HTML5 development. If even Firefox doesn't have this feature, IE might not get it for at least another 2 years. I don't think Microsoft has even announced support for WebRTC in any future IE version yet.
Originally, we used socket.io for presence management and PeerJS library (http://peerjs.com), which uses its own websocket server, for WebRTC signaling. We had 2 websocket servers and we really wanted to avoid hosting them ourselves, so we considered 3 third-party services - Pusher, PubNub and Firebase.
Pusher has really awkward presence management that requires you to store user state on your own server, if I understood their docs correctly.
PubNub had similar issue as Pusher, though very recently they released a new feature that allows you to broadcast user state changes without having to store it on your own server.
Firebase is in my opinion the easiest one to use, especially for presence management, because it's a real database and not only a messaging service. It's also actually really easy to use for private messaging as well, even though I think it wasn't originally designed for that. We've changed PeerJS library to use Firebase for WebRTC signaling, which is basically a form of private messaging. We've also used Firebase in some of our previous projects - e.g. https://github.com/cowbell/presence-firebase.
Something can be supported by an HTML5 standard, where all browsers have agreed to implement that standard, but only a few have gotten around to it yet. (Not sure if that's the case here.)
This is really amazing! I had a bit of trouble on my first attempt because I was connected to a VPN, so ShareDrop was considering me to be in the 10.* range (my local IP address on the VPN) while my coworker on the same router showed up in the 192.* range. I was able to send him a file, but he obviously couldn't send me one back because he wasn't connected to the same VPN.
Once I disconnected from the VPN then ShareDrop starting using my local 192.* IP address instead of my remote VPN address and it worked both ways.
Does this mean that any JavaScript code can determine the client's local IP addresses? Then it can be used for identification, I think browsers should let the users white-list the sites which are allowed to use WebRTC.
It seems so. I was a bit surprised myself, but this data is taken from the info that browsers send to each other to determine the best path for P2P connection. The actual code for determining local IP is taken from http://net.ipcalf.com.
I don't think that's true. I'm connected to a VPN using the built-in VPN client but none of my traffic is going through it (i.e. Send all traffic over VPN connection is unchecked) and my public IP is still the one that my phone has.
EDIT: It seems that the displayed IP is only incorrect, but the service still works over your local IP.
Sure, we mention it even in the README (https://github.com/cowbell/sharedrop/blob/master/README.md). There's probably a workaround if you have a phone with internet access - you could create a local WiFi network on it and connect to ShareDrop through it. Haven't tried it though.
And one advantage to this is that it anything that can view a web page can reach it. I don't have to ask my grandma to install an app on her phone to get a picture on her desktop computer from me : )
I believe the people of Qatar will have an issue with this because they all use a single public IP address. So any Qatari could send a another Qatari a file if they were all to log on.
I opened this with the Hamachi VPN open, and suddenly could share files with my computer on the other side of the world. I have a Mac so usually do this via the built-in sharing but if it were Windows it's certainly easier than messing with Samba.
I had a look at doing this myself recently to do iPhone -> Laptop transfers. Does this work for mobile -> desktop? I didn't think that WebRTC was available on mobile safari and therefore wouldn't work.
It depends on what you mean by "mobile" :) It works between Chrome on Android and desktop. Unfortunately, Safari (neither desktop nor mobile) doesn't support WebRTC.
This is really cool. I am curious why Chrome on iOS wasn't made available yet? (i.e. if there was technical roadblock that made it difficult for you to do so.)
Yeah, it probably could. I think that https://www.sharefest.me/ has faster transfer speeds, especially that it allows you to download the same file from more than one peer.
Sorry, I know you probably feel very strongly about your friend's app, but it doesn't LOOK anything like it, and the functionality is clearly copied from AirDrop. I doubt the ShareDrop developers had ever heard of your friend's app.
Pretty cool. It does upload the files to S3 though, right?
ShareDrop in theory should be much faster (especially on local network) and more secure, as it sends files directly between devices without any server in the middle.
True. I think the difference would be more obvious with popular files. Say you're at a lecture with 400+ students around you and you want to share some content. Hitting an S3 bucket might make more sense than handling 400+ connections locally.
Initially, I tried using this between a computer on my 2.4 GHz band and a computer on my 5 GHz band, and I guess the JavaScript wasn't able to determine the local IP addresses. However, after switching to the same frequency it worked.
Oh I was thinking about a collaboration scenario. Something next door to pair programming where two people are working on a document together but just not simultaneously.
Then: We're really sorry, but your browser is not supported. Please use the latest Chrome for Desktop or Android or Opera. Firefox support is coming soon!
So basically, this is a webkit app, not a HTML5 app?