Does this have a WebRTC data channel client implementation, or does it solve more rudimentary aspects of WebRTC such as passing offers and answers (i.e. signalling)? This node module [1] is a client for data channels (but sadly no native Windows support yet which is a needed thing [2]). Once more widely adopted, WebRTC will be a great data communication method between users of all sorts of common-user desktop applications, not just browsers, mainly because of it's NAT traversal techniques and encrypted-by-default requirement. In some instances a TURN proxy may be required (and the popular one [3] isn't the easiest to setup, and doesn't have a native-Windows-not-Cygwin install). This is especially true for users behind large corporate/government networks that don't give you a single public IP per machine.
I have done a lot of work w/ WebRTC data channels recently and I am working on a POC for hosting one's own "page" (i.e. facebook-esque profile page) themselves. WebRTC I think is the best technology so far for the decentralization of internet data from hosted servers to users. It still requires some server side things such as signalling (the handshake), STUN servers (external IP discovery behind a network), and TURN servers (proxies for complicated networks). By packaging up those three things into a single server that can be easily deployed by someone you trust (i.e. some kind of regional "manager" of sorts) and having good software to display web content over WebRTC data channels, a neighborhood-level darknet of sorts will be very feasible for even non-technical users.
The client portions are definitely in the library, and as you point out the node-webrtc library is looking really promising for interop with server processes.
If you need any help with the POC that you are currently working on feel free to reach out and I'll see what I can do (I'm the main dev working on rtc.io at the moment). Also, the primary dev on the node-webrtc project (modeswitch) is super helpful so I'm sure he'd be happy to help out also.
Either twitter or github is a good way to get in touch with me - usename is DamonOehlman in both channels...
Dear GitHub: Please make it possible to "follow", or at the very least, star an Organization. I want to bookmark https://github.com/rtc-io, not a particular project they are doing.
Organizations, as currently implemented, are the opposite of "social". Spend some of that $100 million and fix it please. Thanks.
I agree with that comment, which was one of the reasons rtc.io was created in the first place. A lot of the other libraries hide away the core browser objects through higher-level JS objects, whereas the core rtc.io library (rtc - https://github.com/rtc-io/rtc) encourages direct use of the browser api.
Some of the other modules (rtc-quickconnect, rtc-glue, etc) in the rtc.io suite, however, do take you further away from the metal but if you are comfortable with the core browser APIs then using a combination of rtc-signaller and the connection coupling helper in rtc (https://github.com/rtc-io/rtc/blob/master/couple.js) will probably give the most flexible option for writing a WebRTC application.
Just be aware that there are some bizarre edge cases when working with WebRTC that can leave you scratching your head at times. The rtc/couple module takes care of some, but there are still others that I'm still investigating solutions for, e.g. https://github.com/rtc-io/rtc/issues/14
http://peerjs.com/ is the best library I've found for WebRTC thus far. Their documentation is fair, there's decent support for DataChannels and they've also open sourced a signalling server. https://github.com/peers/peerjs-server
I haven't done that much investigation myself yet, but I definitely think it's possible. No idea on which will be faster, I imagine it will come down to quantity and quality of peers in both cases...
I am new to WebRTC so here is my question: how can you "ring" my browser so I know I have an incoming call without you first telling me to go to a specific url?
I believe WebRTC has great potential to replace facetime and skype with a browser based version.
I've just started looking into it, and as far as I can understand, you can't "push" a call to others. You will have to supply a web page and the javascript to connect to a "meeting room" or whatever (using ajax?) to "find" the other peer, and exchange connection parameters, before the webRTC stuff kicks in. (Correct me if I'm wrong)
So we could use a browser extension to listen in the background to a central phone server for incoming calls while we happily surf the web and then get the "ring" opening the url in a tab for the incoming call to take place?
Yeah, but why would you want to take calls in your browser? Why not a separate application (node-webkit, Firefox app) that runs as its own process a la Skype clone?
WebRTC is just a protocol for applications. So you'll need to have Hangouts or Skype or whatever client using WebRTC open, and then it should work when someone calls you through them, on the web.
Take Facebook Chat for example or whatever they are calling that integration with a Java Skype plugin. Instead of using that Java plugin, it could use WebRTC in the future, and it won't even need Skype. It could just work with Facebook users, which is something Facebook might want anyway, or at least until Skype uses WebRTC, too.
Before you can "ring" somebody in their browser, their presence has to get established first. So, they need to have signalled their presence to a signalling server first. That can happen via loading a specific URL, or being logged in to a specific Website. It's not possible to just magically know that they are around without them announcing it.
Thanks to a project that has been previously pointed out (node WebRTC bindings - https://github.com/js-platform/node-webrtc) interop between a browser and node applications isn't too far away.
There is this issue which is being worked on at the moment in the node-webrtc library:
Once that's resolved data channel connectivity between a browser and command-line app, server, etc should be reasonably simple. While this bug is outstanding, it is possible to fall back to Rtp data channels in the browser and if that is something that is of interest then we can look at putting together some examples with rtc.io if that would help you out.
Do you know if it could actually work on iOS and Android? It doesn't seem supported by Safari yet [1]. I'm deeply interested by capturing the microphone on mobile devices with WebRTC.
I have done a lot of work w/ WebRTC data channels recently and I am working on a POC for hosting one's own "page" (i.e. facebook-esque profile page) themselves. WebRTC I think is the best technology so far for the decentralization of internet data from hosted servers to users. It still requires some server side things such as signalling (the handshake), STUN servers (external IP discovery behind a network), and TURN servers (proxies for complicated networks). By packaging up those three things into a single server that can be easily deployed by someone you trust (i.e. some kind of regional "manager" of sorts) and having good software to display web content over WebRTC data channels, a neighborhood-level darknet of sorts will be very feasible for even non-technical users.
1 - https://github.com/js-platform/node-webrtc 2 - https://github.com/js-platform/node-webrtc/issues/42 3 - http://code.google.com/p/rfc5766-turn-server/