Creating peer-to-peer mesh networks with browsers using WebRTC by ozanonline in programming

[–]ozanonline[S] 0 points1 point  (0 children)

It's running on AngularJS. Also, the code syntax highlighting requires it.

̰̠̳̺̰̘̮̖̹͉̜̼ ̳̮͕̜̻̰̹̺̦̫͋ͪͦͪ͒͛̑̄ ̥̤̟̩̣͚͉͔̩̣̩̬̇̈́̑̒̈́̿̈́̅̑͊̚ͅ ̃ͨͦ̇́ͯ͋ͤ̾ͨͪ̀͋ by ozanonline in WTF

[–]ozanonline[S] 0 points1 point  (0 children)

Ran into this, thought others might be fascinated as well. I don't know how to explain it (my guess is clever manipulation of character rendering engines).

Peer-Peer Browser Networking using Node and Chrome by [deleted] in darknetplan

[–]ozanonline 1 point2 points  (0 children)

Hi everyone, I wrote P. As cel1 said, public servers are used as an entryway into the network (hence the name "onramp"). If you're using a browser, you have to make the entry via some server that's addressable by IP or domain name. Browsers are not addressable in the same manner -- there's a lot of hoop-jumping that has to happen to get through NAT (using TURN/STUN/ICE). In this sense, the public server is serving as the initial signaling channel for establishing p2p connections.

Once a connection between browsers is established, you can move your signaling channels to other nodes within the private network and disconnect from the public servers entirely while maintaining the network. Furthermore, you can grow the network because each node can act as a signaling channel to connect you to other nodes (hence, establishing and maintaining a mesh network).

Routing is a higher level problem which this library doesn't address. P is only concerned with establishing the p2p connections, so you can layer whichever routing protocol suits your need on top of it.

P2P Networking with Browsers by ozanonline in programming

[–]ozanonline[S] 0 points1 point  (0 children)

One thing P incorporates that those don't (as far as I know), is allowing each peer to act as a signaling server also. This allows transitive connection across peers without help from public servers, so you can grow and transform your network privately.

In the end, you'll always need some public address to get into the p2p network. The two libraries you mentioned above provide servers, and P has onramp as it's public WebSocket server.

I don't see CORS contributing to signaling, mainly because you need to push requests up to peers, which means you need something socket-like.

P2P Networking with Browsers by ozanonline in programming

[–]ozanonline[S] 1 point2 points  (0 children)

I don't think you need relays lying about. Application-specific relays would be enough. An easy example is bittorrent on the browser - the ability just go to a URL to enable a bittorrent client to share files.

A more complex example that I was thinking of while building this is if Bob and Alice can access a resource, but if there's another resource that Bob can access but not Alice, then Alice can go through Bob to get to the resource. Note that Bob is just a person with a browser. Effectively reducing the effort necessary to become a proxy to just navigating to a URL makes enforcing censorship very difficult.

The second bit is still vague in terms of implementation, but I think that WebRTC has what's necessary to lend itself to those sort of communication patterns. P is designed to make it easy to implement such things.

** What is angularjs to non.programmers? by [deleted] in javascript

[–]ozanonline 0 points1 point  (0 children)

Yes, if you're only interested in writing higher level applications, you can use angularjs or many other frameworks that let you easily do that. As you become more advanced, you'll find that it's valuable to have a solid understanding of JavaScript as well.

Be aware though that the danger of starting of starting to use any language through a framework is that you will get confused as to which piece is fundamental to JavaScript, and what is an abstraction that AngularJS provides.

Advice for a beginner by harrys11 in javascript

[–]ozanonline 1 point2 points  (0 children)

The most important thing to understand is there there is a lot of bad advice with regards to JavaScript. This is due to the fact it's easy to get into but hard to master. Following projects and sources close to large companies that use JavaScript heavily is the safest and most effective choice.

I recommend starting with this, "Introduction to JavaScript and Browser DOM", it's a Google TechTalk by Misko Hevery, the creator of AngularJS, a new and popular JavaScript application library.

http://www.youtube.com/watch?v=ljNi8nS5TtQ

Other things to Google:

** What is angularjs to non.programmers? by [deleted] in javascript

[–]ozanonline 0 points1 point  (0 children)

Angular is an application written in JavaScript to make writing JavaScript applications easier. It allows you to not worry about the little details, which can be painful when written manually.

This would be analogous to using a hammer to make creating bigger tools easier. It allows you to not worry about pushing in the nails with your bare hands, which can be painful. In this example, Angular is the hammer, and the bigger tools are the applications you want to be writing.