Live data from Hacker News

Show HN: DirtyShare, Pure JavaScript P2P File Sharing (in Node.js + Socket.io)

gun.io

11–20 of 28 posts

Re: Show HN: DirtyShare, Pure JavaScript P2P File Sharing (in Node.js + Socket.io)

#11
post #10
post #9

Earlier quoted context omitted.

There is a 'FileStorage' API which I would like to use rather than the DOM, but only Chrome supports it for now, and I would like this experiment to remain cross-platform (there are enough 'chrome-only' experiments on the web already). I have opened an issue about this here: https://github.com/Miserlou/DirtyShare/issues/3

Do you have a link to this API? Googling for "Chrome FileStorage" doesn't produce any relevant results.

I think I meant FileSystem instead of FileStorage.

This is the page I used a lot for researching this project: http://www.html5rocks.com/en/tutorials/file/filesystem/

Re: Show HN: DirtyShare, Pure JavaScript P2P File Sharing (in Node.js + Socket.io)

#12
post #10
post #9

Earlier quoted context omitted.

There is a 'FileStorage' API which I would like to use rather than the DOM, but only Chrome supports it for now, and I would like this experiment to remain cross-platform (there are enough 'chrome-only' experiments on the web already). I have opened an issue about this here: https://github.com/Miserlou/DirtyShare/issues/3

Do you have a link to this API? Googling for "Chrome FileStorage" doesn't produce any relevant results.

[deleted]

Re: Show HN: DirtyShare, Pure JavaScript P2P File Sharing (in Node.js + Socket.io)

#14
I made almost exactly the same thing a few months ago: http://www.transfury.com/

The server is written in node.js and it uses socket.io to do the transfers. I think it only works in Chrome because I didn't bother getting the drag-and-drop working with anything else. Actually, it seems to be broken in the current dev channel of Chrome. I announced it back in September:

https://plus.google.com/116396240707733722472/posts/d9ydb8o2...

Re: Show HN: DirtyShare, Pure JavaScript P2P File Sharing (in Node.js + Socket.io)

#15

I made almost exactly the same thing a few months ago: http://www.transfury.com/ The server is written in node.js and it uses socket.io to do the transfers. I think it only works in Chrome because I didn't bother getting the drag-and-drop working with anything else. Actually, it seems to be broken in the current dev channel of Chrome. I announced it back in September: https://plus.google.com/116396240707733722472/pos…

Interesting! It's funny how we both chose the same arbitrary chunk size :)

Re: Show HN: DirtyShare, Pure JavaScript P2P File Sharing (in Node.js + Socket.io)

#16
post #15

I made almost exactly the same thing a few months ago: http://www.transfury.com/ The server is written in node.js and it uses socket.io to do the transfers. I think it only works in Chrome because I didn't bother getting the drag-and-drop working with anything else. Actually, it seems to be broken in the current dev channel of Chrome. I announced it back in September: https://plus.google.com/116396240707733722472/pos…

Interesting! It's funny how we both chose the same arbitrary chunk size :)

Heh. Well, mine wasn't completely arbitrary. If I remember correctly I was trying to trade off server CPU usage with memory usage. One chunk at a time is buffered on the server, so I wanted to keep it small enough that I could have a bunch of ongoing transfers on my puny t1.micro. However, too small of a chunk size resulted in too many roundtrips and lots of CPU load on the server. I settled on this value because I was able to pump a couple megabytes per second through it using one stream, which seemed reasonable.

Also: in further testing, it looks like Safari works with the drag and drop, but not the uploading. I purposely disabled all socket.io transfer types except web sockets in order to encourage adoption of modern browsers. Unfortunately, since I used such bleeding edge, unstandardized technology (drag and drop, file API, and web sockets), the browsers have changed and broken my implementation, each in a slightly different way, such that none of them work end to end anymore.

Re: Show HN: DirtyShare, Pure JavaScript P2P File Sharing (in Node.js + Socket.io)

#17
Kudos on the site!

In an earlier version of Sendoid, we were doing exactly this to handle the "larger than reasonable" in-browser sharing issue. We had some privacy concerns at the time with still requiring what was essentially a data proxy server in the middle and eventually removed the functionality when the desktop application was released.

WebRTC is really exciting from a private data transfer perspective and will hopefully start getting us out of the "server-in-the-middle" architecture that we've had to live on for so long with in-browser data transfer. As an added plus, it would be another nail in flash's coffin for live video chat, which is really just a live data transfer problem after all.

Re: Show HN: DirtyShare, Pure JavaScript P2P File Sharing (in Node.js + Socket.io)

#18
post #15

Earlier quoted context omitted.

Interesting! It's funny how we both chose the same arbitrary chunk size :)

Heh. Well, mine wasn't completely arbitrary. If I remember correctly I was trying to trade off server CPU usage with memory usage. One chunk at a time is buffered on the server, so I wanted to keep it small enough that I could have a bunch of ongoing transfers on my puny t1.micro. However, too small of a chunk size resulted in too many roundtrips and lots of CPU load on the server. I settled on this value because I w…

If anyone cares, I found out what the problem was. Chrome updated to a new version of the web socket standard back in version 15 or so. I wasn't aware of the change and so didn't update my version of socket.io which supports the new standard, thus an incompatibility. It should work now.

This just goes to show that you have to be vigilant if you are building sites with the latest and greatest, as they are still under development and likely to change out from under you.

Re: Show HN: DirtyShare, Pure JavaScript P2P File Sharing (in Node.js + Socket.io)

#19

I made almost exactly the same thing a few months ago: http://www.transfury.com/ The server is written in node.js and it uses socket.io to do the transfers. I think it only works in Chrome because I didn't bother getting the drag-and-drop working with anything else. Actually, it seems to be broken in the current dev channel of Chrome. I announced it back in September: https://plus.google.com/116396240707733722472/pos…

Couldn't you just connect the uploader's POST to the downloader's GET request instead of using websockets?

Re: Show HN: DirtyShare, Pure JavaScript P2P File Sharing (in Node.js + Socket.io)

#20

I made almost exactly the same thing a few months ago: http://www.transfury.com/ The server is written in node.js and it uses socket.io to do the transfers. I think it only works in Chrome because I didn't bother getting the drag-and-drop working with anything else. Actually, it seems to be broken in the current dev channel of Chrome. I announced it back in September: https://plus.google.com/116396240707733722472/pos…

Couldn't you just connect the uploader's POST to the downloader's GET request instead of using websockets?

This seems to be more of a streaming upload/download. Node just basically pipes along the chunks from the serving peer through the websockets.

I'm pretty sure that if you just "connect the uploader's POST to the downloader's GET" then the Node server would have to buffer the entire file from the submitter before sending it to the clients.

Post reply on HN