NetCare logo

Gebruik je browser om te videochatten

Gebruik je browser om te videochatten

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/v0.10.17/node-v0.10.17.tar.gz
                tar zxf node-v0.10.17.tar.gz
                cd node-v0.10.17
                ./configure
                sudo make
                sudo make install

                cd /usr/local/lib/node_modules/npm

                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

Abdel Amhaini (Werknemer niet meer in dienst bij NetCare)

Abdel Amhaini

IT Specialist
Functie omschrijving

Beheren IT infrastructuur bestaande uit Windows 2003/2008, Exchange 2003/2010, Linux, Cisco, Citrix Xenserver etc...