87a2dec992
commitc04cdad7db
Author: RobinLinus <robinlinus@users.noreply.github.com> Date: Sat Sep 22 08:47:40 2018 +0200 Cleanup commit891859680a
Author: RobinLinus <robinlinus@users.noreply.github.com> Date: Sat Sep 22 05:55:09 2018 +0200 Refactor about page commit04415ef28f
Author: RobinLinus <robinlinus@users.noreply.github.com> Date: Sat Sep 22 04:44:17 2018 +0200 Cleanup commit52bd7692e9
Author: RobinLinus <robinlinus@users.noreply.github.com> Date: Fri Sep 21 23:19:54 2018 +0200 Notifications Android & Desktop commitf537b96213
Author: RobinLinus <robinlinus@users.noreply.github.com> Date: Fri Sep 21 22:32:39 2018 +0200 Notifications commit476cb0ae65
Author: RobinLinus <robinlinus@users.noreply.github.com> Date: Fri Sep 21 22:31:46 2018 +0200 Notifications commit5a631d3833
Author: RobinLinus <robinlinus@users.noreply.github.com> Date: Fri Sep 21 21:21:44 2018 +0200 Notfication API on android commit600d3551f4
Author: RobinLinus <robinlinus@users.noreply.github.com> Date: Fri Sep 21 21:12:11 2018 +0200 Add will-change commit3ac40fb3d7
Author: RobinLinus <robinlinus@users.noreply.github.com> Date: Fri Sep 21 21:04:48 2018 +0200 Don’t reconnect if already connecting commit9c9ca70d05
Author: RobinLinus <robinlinus@users.noreply.github.com> Date: Fri Sep 21 20:55:15 2018 +0200 Reconnect on rejoin room commit7194c65c74
Author: RobinLinus <robinlinus@users.noreply.github.com> Date: Fri Sep 21 20:51:56 2018 +0200 Reconnect on rejoin room commit0ede41f8d5
Author: RobinLinus <robinlinus@users.noreply.github.com> Date: Fri Sep 21 20:34:49 2018 +0200 Cancel keep alive on join room commit1d9581632f
Author: RobinLinus <robinlinus@users.noreply.github.com> Date: Fri Sep 21 20:25:54 2018 +0200 Cancel keep alive on join room commite71564a97c
Author: RobinLinus <robinlinus@users.noreply.github.com> Date: Fri Sep 21 20:15:55 2018 +0200 Cancel keep alive on join room commit0731a21d68
Author: RobinLinus <robinlinus@users.noreply.github.com> Date: Fri Sep 21 20:09:49 2018 +0200 Cancel keep alive on join room commit61697d3abc
Author: RobinLinus <robinlinus@users.noreply.github.com> Date: Fri Sep 21 20:01:59 2018 +0200 Cancel keep alive on join room commitb0fd89eb96
Merge:4cf2bed
b67afca
Author: RobinLinus <robinlinus@users.noreply.github.com> Date: Fri Sep 21 19:55:32 2018 +0200 Merge remote-tracking branch 'origin/master' into dev # Conflicts: # server/index.js commit4cf2beda90
Author: RobinLinus <robinlinus@users.noreply.github.com> Date: Fri Sep 21 19:49:16 2018 +0200 Fix beforeunload on iphone commit728aabd449
Author: RobinLinus <robinlinus@users.noreply.github.com> Date: Fri Sep 21 19:32:59 2018 +0200 Fix typo in server commit96e37aef40
Author: RobinLinus <robinlinus@users.noreply.github.com> Date: Fri Sep 21 19:25:01 2018 +0200 Fix typo commit31e5f635d1
Author: RobinLinus <robinlinus@users.noreply.github.com> Date: Fri Sep 21 19:24:01 2018 +0200 Add connection state handler commite573d57419
Author: RobinLinus <robinlinus@users.noreply.github.com> Date: Fri Sep 21 19:17:07 2018 +0200 STUN server tests commit6a1de29267
Merge:6317c25
92a5f3b
Author: RobinLinus <robinlinus@users.noreply.github.com> Date: Fri Sep 21 19:15:31 2018 +0200 Merge branch 'dev' of github.com:RobinLinus/snapdrop into dev # Conflicts: # client/scripts/network.js commit6317c25b10
Author: RobinLinus <robinlinus@users.noreply.github.com> Date: Fri Sep 21 19:14:25 2018 +0200 Cleanup; fix STUN servers commit92a5f3b782
Author: RobinLinus <robinlinus@users.noreply.github.com> Date: Fri Sep 21 19:14:25 2018 +0200 Cleanup; fix STUN servers commite9eeea48e5
Author: RobinLinus <robinlinus@users.noreply.github.com> Date: Fri Sep 21 18:54:52 2018 +0200 Fix notifications on android commit36ec13d428
Author: RobinLinus <robinlinus@users.noreply.github.com> Date: Fri Sep 21 18:53:31 2018 +0200 Fix uncaught error in server commitabf96c0228
Author: RobinLinus <robinlinus@users.noreply.github.com> Date: Fri Sep 21 16:36:59 2018 +0200 Test
70 lines
3.4 KiB
Markdown
70 lines
3.4 KiB
Markdown
# Snapdrop
|
||
|
||
[Snapdrop](https://snapdrop.net): local file sharing in your browser - inspired by Apple's Airdrop.
|
||
|
||
#### Snapdrop (Version 2) is built with the following awesome technologies:
|
||
* Vanilla HTML5 / ES6 / CSS3
|
||
* Progressive Web App
|
||
* [WebRTC](http://webrtc.org/)
|
||
* [WebSockets](http://www.websocket.org/) fallback (iDevices don't support WebRTC)
|
||
* [NodeJS](https://nodejs.org/en/)
|
||
* [Material Design](https://material.google.com/)
|
||
|
||
|
||
### Frequently Asked Questions
|
||
|
||
### Instructions
|
||
* [Video Instructions](https://www.youtube.com/watch?v=4XN02GkcHUM) (Big thanks to [TheiTeckHq](https://www.youtube.com/channel/UC_DUzWMb8gZZnAbISQjmAfQ))
|
||
* [idownloadblog](http://www.idownloadblog.com/2015/12/29/snapdrop/)
|
||
* [thenextweb](http://thenextweb.com/insider/2015/12/27/snapdrop-is-a-handy-web-based-replacement-for-apples-fiddly-airdrop-file-transfer-tool/)
|
||
* [winboard](http://www.winboard.org/artikel-ratgeber/6253-dateien-vom-desktop-pc-mit-anderen-plattformen-teilen-mit-snapdrop.html)
|
||
* [免費資源網路社群](https://free.com.tw/snapdrop/)
|
||
|
||
##### What about the connection? Is it a P2P-connection directly from device to device or is there any third-party-server?
|
||
It uses a P2P connection if WebRTC is supported by the browser. (WebRTC needs a Signaling Server, but it is only used to establish a connection and is not involved in the file transfer).
|
||
|
||
If WebRTC isn’t supported (Safari, IE) it uses a Web Sockets fallback for the file transfer. The server connects the clients with each other.
|
||
|
||
##### What about privacy? Will files be saved on third-party-servers?
|
||
None of your files are ever saved on any server.
|
||
Snapdrop doesn't even use cookies or a database. If you are curious have a look [at the Server](https://github.com/RobinLinus/snapdrop/blob/master/server/ws-server.js).
|
||
But it does use Google Analytics.
|
||
|
||
##### Is SnapDrop a fork of ShareDrop?
|
||
No. ShareDrop is built with Ember. Snapdrop is built with vanilla ES6.
|
||
I wanted to play around with Progressive Web Apps and then I got the idea of a local file sharing app. By doing research on this idea I found and analysed ShareDrop. I liked it and thought about how to improve it.
|
||
ShareDrop uses WebRTC only and isn't compatible with Safari browsers. Snapdrop uses a Websocket fallback and some hacks to make Snapdrop work due to the download restrictions on iDevices.
|
||
|
||
|
||
### Snapdrop is awesome! How can I support it?
|
||
* [File bugs, give feedback, submit suggestions](https://github.com/RobinLinus/snapdrop/issues)
|
||
* Share Snapdrop on your social media.
|
||
* [Buy me a cup of coffee](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=R9C5E42UYEQCN)
|
||
* Fix bugs and make a pull request.
|
||
* Do security analysis and suggestions
|
||
|
||
## Local Development
|
||
```
|
||
git clone git@github.com:RobinLinus/snapdrop.git
|
||
cd snapdrop/server
|
||
npm install
|
||
node index.js
|
||
|
||
# open a second shell:
|
||
cd snapdrop/client
|
||
python -m SimpleHTTPServer
|
||
```
|
||
|
||
Now point your browser to http://localhost:8000.
|
||
|
||
## Deployment Notes
|
||
The client expects the server at http(s)://your.domain/server.
|
||
|
||
When serving the node server behind a proxy the `X-Forwarded-For` header has to be set by the proxy. Otherwise all clients that are served by the proxy will be mutually visible.
|
||
|
||
By default the server listens on port 3000.
|
||
|
||
For an nginx configuration example see `nginx.conf.example`.
|
||
|
||
## Licences
|
||
* Thanks to [Mark DiAngelo]() for the [Blop Sound](http://soundbible.com/2067-Blop.html)
|