Gebruik je browser om te videochatten

    NetCare
    By NetCare

    Voorwoord

    Voor het communiceren met klanten maken we gebruik van Skype, alleen moet de klant dan wel Skype geinstalleerd hebben. We waren op zoek naar een webbased chattool zonder het installeren van plug-ins. WebRTC, WEB Real Time Communication maakt het mogelijk om via de webbrowser peer-to-peer te videochatten. Chrome, Firefox en Opera hebben hier al ondersteuning voor, de rest van de browsers zal naar onze mening niet achterblijven en snel volgen.

    Wij maken gebruik van de relatief makkelijke EasyRTC, (what’s in the name).
    EasyRTC draait op Node.js en heeft een aantal demo’s om mee te beginnen.

    Wij gaan EasyRTC gebruiken met ssl op poort 8443.
    Om Nat en firewalls te omzeilen maakt WebRTC gebruik van het ICE protocol om Stun en/of Turn servers te benaderen

    • Stun (Session Traversal Utilities for NAT) server wordt gebruikt om het publieke ip-adres te achterhalen.
    • Turn (Traversal_Using_Relays_around_NAT) servers worden gebruikt om het verkeer door de server te laten afhandel mocht de peer to peer verbinding falen.

    In dit voorbeeld gebruik ik de public servers van Google. Het is mogelijk om een eigen Stun/Turn server te installeren

    Onderstaande installatie voeren we uit onder de user "test", EasyRT zal ook opstarten als user "test":

    Installeer Node.js

    Open een Terminal voer de volgende commando’s uit:

                    sudo yum -y update
                    sudo yum -y groupinstall "Developer Tools"
                    cd /usr/src
                    wget http://nodejs.org/dist/node-v0.10.17.tar.gz
                    tar zxf node-v0.10.17.tar.gz
                    cd node-v0.10.17
                    ./configure
                    sudo make
                    sudo install
                    sudo npm install

     

     

    Download EasyRTC en pak het zip-bestand uit

    Download EasyRTC bijv onder /usr/local

     

    Pak de bestanden uit in de map easyrtc
                    unzip easyrtc_server_example.zip -d easyrtc

     

     

    Configureer EasyRTC met HTTPS

    De Standaard EasyRTC configuratie staat onder /usr/local/easyrtc/server.js en gebruikt http op poort 8080. In onze configuratie maken wij gebruik van https op poort 8443:

                    // Load required modules
                    var https   = require("https");     // https server core module
                    var fs      = require("fs");        // file system core module
                    var express = require("express");   // web framework external module
                    var io      = require("socket.io"); // web socket external module
                    var easyrtc = require("easyrtc");   // EasyRTC external module
                    
                    // Setup and configure Express http server. Expect a subfolder called "static" to be the web root.
                    var httpApp = express();
                    httpApp.use(express.static(__dirname + "/static/"));
                    
                    // Start https server op poort 8443 met de private key en het certificaat onder
                    //  /usr/local/easyrtc_cert/
                    var webServer = https.createServer(
                    {
                        key:  fs.readFileSync("/usr/local/easyrtc_cert/easyrtc.key"),
                        cert: fs.readFileSync("/usr/local/easyrtc_cert/easyrtc.crt")
                    },
                    httpApp).listen(8443);
                    
                    // Start Socket.io so it attaches itself to Express server
                    var socketServer = io.listen(webServer, {"log level":1});
                    
                    // Start EasyRTC server
                    var rtc = easyrtc.listen(httpApp, socketServer);
                    
                    // Stun en Turn servers om NAT en firewalls te omzeilen
                    var myIceServers = [
                    { "url":"stun:stun.l.google.com:19302"},
                        {
                        "url":"turn:192.158.29.39:3478?transport=udp",
                        "username":"28224511:1379330808",
                        "credential":"JZEOEt2V3Qb0y27GRntt2u2PAYA="
                        
                        },
                        {
                        "url":"turn:192.158.29.39:3478?transport=tcp",
                        "username":"28224511:1379330808",
                        "credential":"JZEOEt2V3Qb0y27GRntt2u2PAYA="
                    }
                    ];

     

    EasyRTC opstarten

    Start de server handmatig op door het volgende commando uit te voeren

                    sudo node server.js

    Browse dan naar de server bijv. https://easyrtc.netcare.nl:8443/demos
    Hier staan een aantal demos met bijbehorende code om in je eigen webserver te implementeren.

    Maak een Init script aan voor EasyRTC:
                    vi /etc/init.d/easyrtc

    En plak onderstaande code erin

                    #!/bin/sh
                    
                    #
                    # chkconfig: 35 99 99
                    # Node staat in de map /usr/local/bin/node
                    # EasyRTC staat in de /usr/local/ easyrtc
                    #
                    
                    . /etc/rc.d/init.d/functions
                    
                    USER="test"
                    
                    DAEMON="/usr/local/bin/node"
                    ROOT_DIR="/usr/local/easyrtc"
                    
                    SERVER="$ROOT_DIR/server.js"
                    LOG_FILE="$ROOT_DIR/server.js.log"
                    
                    LOCK_FILE="/var/lock/subsys/node-server"
                    
                    do_start()
                    {
                    if [ ! -f "$LOCK_FILE" ] ; then
                    echo -n $"Starting $SERVER: "
                    runuser -l "$USER" -c "$DAEMON $SERVER >> $LOG_FILE &" && echo_success || echo_failure
                    RETVAL=$?
                    echo
                    [ $RETVAL -eq 0 ] && touch $LOCK_FILE
                    else
                    echo "$SERVER is locked."
                    RETVAL=1
                    fi
                    }
                    do_stop()
                    {
                    echo -n $"Stopping $SERVER: "
                    pid=`ps -aefw | grep "$DAEMON $SERVER" | grep -v " grep " | awk '{print $2}'`
                    kill -9 $pid > /dev/null 2>&1 && echo_success || echo_failure
                    RETVAL=$?
                    echo
                    [ $RETVAL -eq 0 ] && rm -f $LOCK_FILE
                    }
                    
                    case "$1" in
                    start)
                    do_start
                    ;;
                    stop)
                    do_stop
                    ;;
                    restart)
                    do_stop
                    do_start
                    ;;
                    *)
                    echo "Usage: $0 {start|stop|restart}"
                    RETVAL=1
                    esac
                    
                    exit $RETVAL

     

    Maak het script uitvoerbaar en laat het automatisch opstarten
                    chmod a+x /etc/init.d/easyrtc
                    chkconfig easyrtc on




    Original: https://www.netcare.nl/blog/view/19039/gebruik-je-browser-om-te-videochatten
    By: Abdel Amhaini
    Posted: July 23, 2014, 5:03 pm

    NetCare

    NetCare

    NetCare is een ervaren ICT organisatie, die praktische en uitvoerbare oplossingen levert op de gebieden detachering, software ontwikkeling en ons sociaal intranet applicatie MyVox om zo toegevoegde waarde te creëren.
    Volledige omschrijving

    NetCare is een ervaren ICT organisatie, die praktische en uitvoerbare oplossingen levert op de gebieden detachering, software ontwikkeling en ons sociaal intranet applicatie MyVox om zo toegevoegde...