Echo JS 0.11.0

<~>
GrosSacASacs 2876 days ago.
#Context

Two month ago I discovered the WebRTC APIs. It is still a [w3c editors draft](http://w3c.github.io/webrtc-pc/) but some functionality is available with prefixes in chrome and firefox today. These APIs enable direct client to client communication, which was previously impossible in the browser (without a plugin).

#New possibilities

This means it is also possible to serve HTML or develop APIs on a client and answer directly to requests from another client, and acting as a pseudo server, without that a real server handling that information flow. I made a minimal example of this.

#However

The real server is somehow still needed. First of, two clients don't have public addresses like server have with URLs, that means to start a connection between two peers , a server is needed to initiate the conversation. Also a server is needed to deliver the initial HTML and JS.

#Theory

The challenge is to resolve the 2 problems listed above: Here are my first ideas: Giving one of the clients the same code as the server uses, and run it from there. This means a client could initiate the conversation between two other client. Using service workers and local storage we could partially solve the second problem

#In practice

That is the call for action: Who wants to help create a client side server. We need to engineer something together and then implement the system with code. I need you to speed up the research.

#How to apply:

Reply to this message with a message proving you are willing to make this a reality

neoberg 2876 days ago. link 2 points
But you still need a server for initial join to the network, right?
GrosSacASacs 2876 days ago. link 1 point
Initially yes, but the second time we can load the html from local disk with the service worker
RangerMauve 2876 days ago. link 2 points
What you want is just a peer to peer network with some sort of RPC between them. There's a bunch of things on NPM to get you started with this.
GrosSacASacs 2876 days ago. link 1 point
To an extend but not only. To get rid of the server we need to remove its authority too, which mean the client pseudo server are not just executing , they're doing it without a server telling them.
druidegrey 2836 days ago. link 1 point
Great idea! Was thinking about this time to time for about a year or so... :) Not sure right now about free time for such project but would love to see some progress and maybe contribute.
I think you can look at swarm.js
http://swarmjs.github.io/
And torrent networks
https://webtorrent.io/
One more thing is private networks behind symmetric nat. If it's server less network we need some technique to predict/penetrate open ports for this nodes.