Hacker News new | past | comments | ask | show | jobs | submit login
Show HN: HTML5 clone of OS X AirDrop – Easy P2P file transfers in a browser (sharedrop.io)
165 points by szimek on March 25, 2014 | hide | past | favorite | 68 comments



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?


No idea why it asked for Flash.

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.


I'm running Chrome version 26.0.1410.63 on Linux, and I'm getting the not supported error message. Is there a minimum Chrome version?


I think it worked since 32. The current stable Chrome version is 33.


I think I've figured out why it asked for Flash. I forgot to remove socket.io related files that we were using before switching to Firebase.


Why did you switch to Firebase?


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.

If you're interested, you can check out the relevant source code for presence management at https://github.com/cowbell/sharedrop/blob/master/app/scripts... and WebRTC signaling at https://github.com/cowbell/sharedrop/blob/master/app/scripts....


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.)


Chrome doesn't use Webkit anymore. Safari does and it's not supported by this website.


Webkit is the new IE.


It's not a Webkit app - it rejects the latest version of Safari on Mac too - and you can't get much Webkittier than that.


Wow, someone is really pushing the boundaries of what is possible on the web and all you care about is old browser support.

That's it guys, lets pack up and go back to getting CSS to center vertically.


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 believe it is the public IP address and not the local IP address that brings everyone to the same page.


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.


Cool, but one major advantage to airdrop is that it doesn't require a local network at all, so you can airdrop even without any wifi AP in range.


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.


Noob question: It seems like websockets is more appropriate for sending files to peers, why would they go for webrtc?


No central server to intercept the file in transit


"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!"

What could possibly be the reason they wouldn't support webkit based browsers?

Safari 7.0.2 OS 10.9.2



Holy fucking shit this is the best thing since sliced bread. You don't know how much I hate emailing file attachments.


Hopefully, we'll add sending files between networks pretty soon as well.

However, it's already possible with similar WebRTC based services like https://www.sharefest.me/ or https://rtccopy.com/.


Thanks!

Ironically, most of my file emailing does in fact take place within the same network.


Why no use of SMB networks? Always puzzled me.


Because configuring SMB on each machine is hard and takes time.


sharefest and rtcopy suffer of complexity suckage, please hurry :)


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.)


Something similar (with a server in the middle) for android<->computer is EZ Drop: http://ez.dropper.co


Another one with a server in the middle: https://wsend.net/upload


I'm getting transfer speeds of ~970KB/s (checking using iStat). Averaging nearly 1MB/s isn't bad, but I'm curious, could this go faster?


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.


Very cool! I love the P2P aspect.

I have a similar project that drops files in your dropbox account: http://dbinbox.com


Looks like a clone of my friends page: http://www.sumodrop.com

*edit: I guess 'clone' is too strong. I meant to imply it has similar functionality, not that it is carbon copied. Yes, I goofed.


This one even works on Firefox. Nice.


> Looks like a clone...

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.


This is really cool!

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.


A cross-platform (but not web-based) open-source LAN file-transfer tool that I've used in the past is dukto:

https://code.google.com/p/dukto/


And it uses Firebase, my favorite real-time service! Awesome stuff gents.


this is the kind of stuff I come to HN for. Well done sir.


This is awesome and it makes me wonder about other potential capabilities. Could a similar method be used to create two-way text chat, for instance?


Sure. WebRTC allows you to send any data, audio and video directly between peers. Though to be honest there are much easier ways to create text chat.


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.


Great stuff! I'm hosting a programming meetup this friday at a coffee shop, seems like a good opportunity to put it through it's paces.


This is really nicely done, but it'd be nice to have some sound and/or popup notification when it's running in the background.


Wasn't sure if this would be useful to me without mobile support, but man, it really saved my ass today. Thanks for this.


"Please use the latest Chrome for Desktop or Android or Opera." Hm yea... maybe not.


Nice one !


seriously cool stuff


It's an EmberJS app :)


Yes it is :)


wow, I'm blown away


awesome ... super cool !


it got my vmware IP address, not the actual one.


really cool and helpful.


U all should check out http://sumodrop.com


it works on mobile browsers also


u guys should check out http://sumodrop.com




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: