peer5 / sharefest Goto Github PK
View Code? Open in Web Editor NEWWeb based p2p file sharing built on WebRTC Data Channels API
Web based p2p file sharing built on WebRTC Data Channels API
First off, this is the most impressive thing I have seen done thus far with webrtc. Some of the stuff done here (such as the SDP hack) I haven't seen done elsewhere online.
Could it be worthwhile to post a link instead of instantly downloading when visiting a ShareFest link. It should be possible using something like this - http://html5-demos.appspot.com/static/a.download.html ?
I noticed here (https://github.com/Peer5/ShareFest/blob/master/public/js/peerConnectionImplChrome.js#L201) that you're manually changing the SDP to increase the bandwidth field.
Why does this work?
Also, it seems like there is no downside to setting this number higher, so why doesn't Chrome set it to big number by default?
Make sure that the user have enough quota in order to use the filesystem.
If the use doesn't have enough quota, fallback to USE_FS = false and make sure the file is under 250MB, else the user can't participate in this swarm.
This is due to the fact that he creates a large Uint8Array object.
Need to build the file in chunks in local storage and then save it directly from there (possible?)
http://www.w3.org/TR/file-writer-api/#examples
http://www.html5rocks.com/en/tutorials/file/filesystem/
https://developer.mozilla.org/en-US/docs/WebAPI/FileHandle
duplicate of #8
Adding files should not be possible unless it's a new room
Currently only the first file will be used and the rest will be omitted.
Does this transfer system have something similar to the function of the info hash in bittorrent, to ensure the copy is an exact duplicate of the original?
Current: the file is loaded to memory and asynchronously being written to filesystem.
Problem: with big files this can overload the memory of the tab
Solution: each slice of the file loaded wait for it to be written to filesystem and then continue with the next slice
User shld be able to select the small size in which file will be divided for transfer
File download should be with the correct file name and type
At the moment we can only match between peers that are using same browser i.e FF --> FF or Chrome --> Chrome.
User should get an alert that he is using a browser not compatible with current room state.
Meaning when ever a room is opened it save which browser it was open with and then pass it to clients which try to log in the room with different browser
after creating a room a user should be notify that now he is waiting for others to join the room (probably the ones he invited)
He receives an alert for file is too big.
But he should also be either directed to faq or some explanation why he can't receive the current swarm.
Currently even reconnection of websocket of a room with one peer would cause room removal
This is a very nice webrtc project. I like to know whats you strategy to get data transfer beone the chrome datachannel limitations.
Can you point me to the right place int he code to look at this?
Thank you
Regards
Dennis Mårtensson
https://www.ssllabs.com/ssltest/analyze.html?d=sharefest.me&s=199.115.112.148
gives good details and tips on the vulnerability of the site
toggle using binary DC when possible (e.g firefox)
for large files Instead of random messages, add a progress bar that indicate how longer one needs to wait until the file is loaded to FS/memory.
One could use the SJCL to encrypt a file while in transit. The secret key would be generated on the client and stored in the URL as an anchor (http://www.sharefest.me/scoobydoo5#secret=45DvbuYgWKbpmv5nFHEgkPDufiWTzvPRx32FcGmLkskY).
This would provide end-to-end encryption to all recipients, making this service much more secure.
This will be useful when sending files to phones
User should be able to put in a URL instead of sharing a file.
This will be more of bittorrent network based sharing but from a single host url
Yet need to debug this but looks like createObjectUrl(blob) is to blame
Decide what to do with Fx 22+ until it hits stable channel
http://mozilla.github.io/webrtc-landing/DataChannel_changes.html
Someone stated that there are javascript errors in nightly,
and there seem to be an api change.
I think it would be a good feature, similar to seeding a torrent.
What does everyone think?
It could be nodejs based, or possibly use phantomjs for immediate deployment.
calculation and UI for the receiver
What is the state of WebRTC in Opera 15, can we support it?
Hello, I think you do good and very interesting thing, but I could not get working demo site http://sharefest.jit.su/ .
In firefox nightly 19.0a1 (2012-11-19)
on windows do not working drag'n'drop and file upload from dialog.
Two open tabs not react on any file droping (just redirect coming with file content in it).
No errors or any messages in firebug.
Peers should be able to close the tab and reopen the URL as if nothing happened.
This would be necessary for reseeding or to complete a download that was aborted (due to tab close/browser crash/OS restart).
Depends on issue #8
https://code.google.com/p/webrtc4all/
Do they support data channel already?
Is their api different?
Instead of the lacking "Sharefest" page title. This will help with browsing history, finding the right tab, etc.
Create an error message that specifies to the user that he can't communicate with the server due to websockets fail, maybe even direct to http://websocketstest.com/ in the "why?"
It would be very useful not to download files sometimes, but just view them using the browser. Suggested by https://news.ycombinator.com/user?id=vy8vWJlco thru https://news.ycombinator.com/item?id=5824114
Minimum the system dependency on the signaling server by transferring SDP and other metadata thru the peers in the swarm
http://blog.printf.net/articles/2013/05/17/webrtc-without-a-signaling-server/
To begin with I thought sharefest was a Godsend because it was so easy. Drag the file,copy the link, send the link and share. I kept the tab open, and my computer was turned on. I saved the link on my computer, closed the tab, and then later tried to use the link. It didn't work. I could share the file as long as the tab was open or if other people wanted to share the file thuse keeping a "chain" open.
Using torrents I can save the file on my computer create a torrent file and pass on the torrent that hopefully someone would share.
What I had hoped sharefest did was that it created the URL so that every time I used the URL, whether I had the tab open or not and whether someone else had shared the file to keep the "chain" open or not, someone could use P2P sharing if my computer was on.
I understand that sharefest does not have cloud storage so this would not be the intention. But is it possible either with sharefest or something else?
Hope you are keeping well,
All the Best,
BillZ
reproduce:
drop a big file (>250mb) in incognito, get a disk limitation error notification.
drop a small file, there's still a disk limitation error notification, even though the small file works and is seeding.
user should know to how many other peers he is connected to and how much he is uploading. same as the one that is downloading knows how much he is downloading
Display a friendly message when some of the features are not present (DataChannels, Websockets)
package.json specifies a server.js file, which seems to have migrated from the root to a 'sharefest' directory. This breaks running "npm start". Simply changing the path to "sharefest/server.js" doesn't work - I'm not sure why. Running "node sharefest/server.js" results in a path issue (the server should probably cd into the expected directory). In the end, changing to the sharefest directory and running node directly on the server.js file worked, but this was surprising behaviour.
Can't send large blobs using mozRTCPeerConnection
tested on chrome 27.0.1413.0
There are FF versions with different user agents, and they are all suppose to be webrtc enabled. testing the user agent prevents that.
give informative description, such as there was not enough space
Disadvantage: needs flash
http://stackoverflow.com/questions/400212/how-to-copy-to-the-clipboard-in-javascript
not sure we want this...
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.