Giter VIP home page Giter VIP logo

dirtyshare's Introduction

logo

DirtyShare - Pure Javascript Peer to Peer Filesharing with NodeJS and Socket.io

Rich Jones - rich@gun.io

Version 0.1.0

DirtyShare is a "Peer to Peer" filesharing system written in pure Javascript with Socket.io and Node.js.

It's called DirtyShare because it's dirty as hell across the whole stack, from the concept to the code to the use case.

About

File transfers in DirtyShare happen from a host client to a peer client, in chunks which go through the webserver over WebSockets provided by Socket.IO. The web server only holds onto the data while it is being received and transmitted through it, so there is no data ever permanently stored on the web server. This makes it perfect for sending dirty pictures!

Ideally, the WebSockets will only be used to establish the P2P connections which will go over the HTML5 PeerConnection object, however, no modern browsers support this feature yet. Hopefully, it will become available within the next 6 months or so, and we will be ready for it

Let's make a purely browser based, ad-free, Free and Open Source private filesharing system!

Demo

There is a live demo here, although it may go down at any time.

Mailing List

If you'd like to discuss P2P web applications further, send an email to

[email protected]

and you'll be part of the discussion mailing list! (Archives here.)

TODO

  • Work on doing proper PeerConnection based transfers when builds are available.
  • Data storgae should use FileSystem instead of the DOM. Firefox need to get their ass in gear on this one.
  • Clean it up. It's a little dirty.
  • Send as little data as possible.
  • Find the optimal size for chunking. Currently set at 64Kb - this is arbitrary.
  • Security, of any kind.
  • Drag and drop of files, so my roommate shuts up about it.

License

For now, consider this code to be under the Affero GNU General Public License. I am willing to relicense it under the BSD/MIT/Apache license, I simply ask that you email me and tell me why. I'll almost certainly agree.

Patches graciously accepted!

dirtyshare's People

Contributors

jdpaton avatar thinkroth avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

dirtyshare's Issues

Use FileStorage API instead of DOM

Not a huge priority until Firefox gets their shit together, unless there is fallback code to use the DOM when FileStorage isn't available. (I want this to remain cross-browser compatible! The web doesn't need another chrome-only demo.)

This is not actually Peer to Peer

You've been stating that this is an example of peer to peer in the browser. Most importantly, peer to peer implies that there is no need for a central server.

Conversely, this project is as dependent on a central server as dependency can go. So I've been wondering, why are you calling this peer to peer? Because data is not permanently stored on the server? That's completely irrelevant.

The way I see it, you only have limited options for peer to peer with node.js:

  1. You'd have to write a client-side bridge for the actual P2P communication (as this cannot run in the browser)
  2. You'd have to use Adobe Flash, with all its downfalls (RTMFP)

The first case has never been accomplished in node.js before, as far as I know. You'd need to have a great deal of knowledge about firewalls, networking, etc. And even so, many corporate firewalls won't allow any P2P traffic (RTMFP also suffers from this, a great many people cannot use it without going in to their router's settings).

The second case is almost certainly a no-go, due to numerous issues

DirtyShare doesn't work in Safari

Sending is broken because Safari doesn't have FileReader, but receiving seems to be broken for another reason I haven't pinned down yet.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.