text: 'use strict';
  
  var os = require('os');
  var nodeStatic = require('node-static');
  var http = require('https');
  var socketIO = require('socket.io');
  var fs = require('fs');
  var key = fs.readFileSync('encryption/private.key');
  var cert = fs.readFileSync( 'encryption/server.crt' );
  var option = {key:key, cert:cert};
  
  var fileServer = new(nodeStatic.Server)();
  var app = http.createServer(option, function(req, res) {
  
    fileServer.serve(req, res);
  }).listen(8080);
  
  var io = socketIO.listen(app);
  io.sockets.on('connection', function(socket) {
  
    // convenience function to log server messages on the client
    function log() {
      var array = ['Message from server:'];
      array.push.apply(array, arguments);
      socket.emit('log', array);
    }
  
    socket.on('message', function(obj) {
      log('Client from room: '+ obj.room + ' said: ', obj.message);
      // for a real app, would be room-only (not broadcast)
      socket.broadcast.emit('message', obj.message);
      //socket.join(obj.room).emit('message', obj.message);
      //socket.
    });
  
    socket.on('create or join', function(room) {
      log('Received request to create or join room ' + room);
  
      var clientsInRoom = io.sockets.adapter.rooms[room];
      var numClients = clientsInRoom ? Object.keys(clientsInRoom.sockets).length : 0;
      log('Room ' + room + ' now has ' + numClients + ' client(s)');
  
      if (numClients === 0) {
        socket.join(room);
        log('Client ID ' + socket.id + ' created room ' + room);
        socket.emit('created', room, socket.id);
      } else if (numClients === 1) {
        log('Client ID ' + socket.id + ' joined room ' + room);
        // io.sockets.in(room).emit('join', room);
        socket.join(room);
        socket.emit('joined', room, socket.id);
        io.sockets.in(room).emit('ready', room);
        socket.broadcast.emit('ready', room);
      } else { // max two clients
        socket.emit('full', room);
      }
    });
  
    socket.on('ipaddr', function() {
      var ifaces = os.networkInterfaces();
      for (var dev in ifaces) {
        ifaces[dev].forEach(function(details) {
          if (details.family === 'IPv4' && details.address !== '127.0.0.1') {
            socket.emit('ipaddr', details.address);
          }
        });
      }
    });
  
    socket.on('bye', function(){
      console.log('received bye');
    });
  
  });
  