title: WebRTC videochat through Websockets
body: <p>I'm trying to develop a video-chat application using webRTC and WebSockets for signaling.
  My problem is that I don't know exactly what is the process of creating RTCPeerConnection and connect both peers(2 browsers) through webSocket(Locally at least).</p>
  
  <p>I know how to communicate clients though WebSockets, but not with the RTCPeerConnection API, you know any tutorial step-by-step explaining the process?(Offer SDP, answers, ICE, ...) and, on the other hand, how looks the server code to managing these clients through RTCPeerConnection?</p>
  
  <p>Here is my Node.js code for the server</p>
  
  <pre><code>"use strict";
  
  // Optional. You will see this name in eg. 'ps' or 'top' command
  process.title = 'node-webrtc';
  
  // Port where we'll run the websocket server
  var webSocketsServerPort = 1337;
  
  // websocket and http servers
  var webSocketServer = require('websocket').server;
  var http = require('http');
  
   /* ---------------------------------
  
              GLOBAL VARIABLES
  
    ----------------------------------*/
  
  // latest 100 messages
  //var history = [ ];
  
  // list of currently connected clients (users)
  var clients = [ ];
  
   /* ---------------------------------
  
              HTTP SERVER
  
    ----------------------------------*/
  
  var server = http.createServer(function(request, response) {
      // Not important for us. We're writing WebSocket server, not HTTP server
  });
  server.listen(webSocketsServerPort, function() {
      console.log((new Date()) + " Server is listening on port " + webSocketsServerPort);
  });
  
   /* ---------------------------------
  
              WEBSOCKET SERVER
  
    ----------------------------------*/
  
  var wsServer = new webSocketServer({
      // WebSocket server is tied to a HTTP server. WebSocket request is just
      // an enhanced HTTP request. For more info http://tools.ietf.org/html/rfc6455#page-6
      httpServer: server
  });
  
  // This callback function is called every time someone
  // tries to connect to the WebSocket server
  wsServer.on('request', function(request) {
      console.log((new Date()) + ' Connection from origin ' + request.origin + '.');
  
      // accept connection - you should check 'request.origin' to make sure that
      // client is connecting from your website
      // (http://en.wikipedia.org/wiki/Same_origin_policy)
      var connection = request.accept(null, request.origin); 
      // we need to know client index to remove them on 'close' event
      var index = clients.push(connection) - 1;
  
      console.log((new Date()) + ' Connection accepted.');
  
  
      // user sent some message
      connection.on('message', function(message) {
          for (var i=0; i &lt; clients.length; i++) {
              clients[i].sendUTF(message);
          }   
      });
  
  
      // user disconnected
      connection.on('close', function(conn) {  
          console.log((new Date()) + " Peer " + conn.remoteAddress + " disconnected.");
          // remove user from the list of connected clients
          clients.splice(index, 1);
      });
  
  });
  </code></pre>