diff --git a/README.md b/README.md index d72f323..992546f 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ Familienduell Client / Server (NodeJs Javascript) ___Windows___ 1. Im Ordner "server" die Datei StartServer.bat doppelklicken. - * Im Fenster das jetzt erscheint sollte: "Websocket Server running at ws://127.0.0.1:8080" stehen. + * Im Fenster das jetzt erscheint sollte: "SERVER IS UP AND RUNNING" stehen. * Falls die Firewall fragt, solltest du die Anfrage zulassen da sonst der client nicht verbinden kann. ___Mac___ @@ -26,21 +26,17 @@ ___Mac___ 4. Starte den Server `node server.js` -5. In der Console erscheint: "Websocket Server running at ws://127.0.0.1:8080" +5. In der Console erscheint: "SERVER IS UP AND RUNNING" ### -B- START DES CONTROLLERS! -1. in den Ordner "web" wechseln und die datei "index.html" mit dem Browser (Chrome / Firefox) öffnen! (Dieses Programm wurde für Chrome entwickelt und wird nur dort getestet.) +1. Browser öffnen und zur Adresse: http://127.0.0.1:8080 surfen - * Wenn der Browser auf dem gleichen PC läuft wie der Server einfach start klicken, ansonsten die IP-Adresse anpassen. - - * (Oben links, in der Ecke des Browsers, sollte nun entwas in der Art "Verbunden mit: ws://127.0.0.1:8080" stehen.) - -4. Auf den Controller Button klicken. +2. Auf den Controller Button klicken. ### -C- Start des Displays -1. Alle Schirtte aus "START DES CONTROLLERS!" in einem neuen Browserfenster ausführen. Dann bei Punkt 4. auf display klicken. +1. In einem neuen Browserfenster verbinden und auf display klicken. --------------------------- @@ -51,20 +47,13 @@ A: Das Bild ist schwarz damit man die Intromusik starten kann und die Leute (Zus Dies kann (Im Controller) über die Checkbox "Blackscreen", im Bereich "Intro" kontrolliert werden. Q: Wie funktioniert das mit 2 oder mehr Geräten? -A: Step by Step: +A: Verwende dazu einfach eine Externe IP des Servers (aus dem Serverfenster) zum Verbinden von einem anderen Gerät aus - 1. Alle Geräte müssen sich im selben Netzwerk (LAN/W-Lan) befinden - 2. Kopiere alle Dateien auf alle Geräte - 3. Starte den Server - 4. Die IP Adresse des Servers wird nach dem Start im Serverfenster unter "From different networks" angezeigt. (sollt mit 192.168. beginnen) - 5. Starte den Controller & Displays auf beliebigen Geräten, aber verwende beim verbinden jetzt die Server IP (Nicht 127.0.0.1) - 6. Los gehts :) - Q: Läuft der Server mit nodeJs auch unter Linux / Läuft der Python Server auch unter Windows? A: Ja, dafür müssen jedoch zunächst die etsprechenden Abhänigkeiten installiert werden. Q: Gibt es eine Funktion um Leuten über einen Link direkt das Zuschauen zu ermöglichen? -A: Ja. Der Link lautet: http://SERVERURL/PFAD/duell.html?ip=SERVERIP (SERVERURL, PFAD und SERVERIP anpassen!) +A: Ja. Der Link lautet: http://SERVERURL/PFAD/index.html?viewonly=true (SERVERURL und PFAD anpassen!) Q: Ich habe sonstige Fehler bei (Anzeige, Verbindungsaufbau, Anwendungsverhalten) A: Falls du einen anderen Browser als Google Chrome verwendest, installiere Chrome. diff --git a/server/server.js b/server/server.js index c46cdd8..76872b3 100644 --- a/server/server.js +++ b/server/server.js @@ -1,9 +1,41 @@ //Websocket Server <<<<<<<<<<<<<< -var wsPort = 8080; +var wsPort = 8081; +var webPort = 8080; var subscribers = []; -var WebSocketServer = require('ws').Server - , wss = new WebSocketServer({port: wsPort}); +var WebSocketServer = require('ws').Server; +var wss = new WebSocketServer({port: wsPort}); +var http = require('http'); +var url = require('url'); +var path = require('path'); var fs = require('fs'); +var baseDirectory = '../web/' + +http.createServer(function (request, response) { + try { + var rurl = request.url; + if(rurl=="/") { + rurl = "/index.html"; + } + var requestUrl = url.parse(rurl) + + // need to use path.normalize so people can't access directories underneath baseDirectory + var fsPath = baseDirectory+path.normalize(requestUrl.pathname); + + var fileStream = fs.createReadStream(fsPath) + fileStream.pipe(response) + fileStream.on('open', function() { + response.writeHead(200) + }) + fileStream.on('error',function(e) { + response.writeHead(404) // assume the file doesn't exist + response.end() + }) + } catch(e) { + response.writeHead(500) + response.end() // end the response so browsers don't hang + console.log(e.stack) + } +}).listen(webPort) wss.on('connection', function(ws) { subscribers.push(ws); @@ -64,11 +96,15 @@ function broadcastMessage(clientId, msg) { } } -console.log("\nWebsocket Server on Port:"+wsPort); -console.log("\nYou have this IPs to connect to:"); -console.log("From this PC: 127.0.0.1 or localhost"); -console.log("\n---From different networks---"); +console.log("\nWebsocket server running on Port:"+wsPort); +console.log("Webserver running on Port:"+webPort); + +console.log("\n---Verbinden von diesem PC---"); +console.log(" Browser öffnen und zu Adresse: http://127.0.0.1:"+webPort+" surfen!"); + +console.log("\n---Adressen zum verbinden von anderen Geräten---"); getLocalIp() + console.log("\n\n------------------------------"); console.log("\n---SERVER IS UP AND RUNNING---"); console.log("\n------------------------------"); @@ -114,10 +150,10 @@ Object.keys(ifaces).forEach(function (ifname) { if (alias >= 1) { // this single interface has multiple ipv4 addresses - console.log(ifname + ':' + alias, iface.address); + console.log(" http://"+iface.address+":"+webPort); } else { // this interface has only one ipv4 adress - console.log(ifname, iface.address); + console.log(" "+ifname+": ", "http://"+iface.address+":"+webPort); } ++alias; }); diff --git a/web/duell.html b/web/duell.html deleted file mode 100644 index 0edbe7e..0000000 --- a/web/duell.html +++ /dev/null @@ -1,157 +0,0 @@ - - - -Familien Duell - - - - - - - - - - - - - -
-
-

Familien Duell

-
- -
-
- - -
- - -
- - - - \ No newline at end of file diff --git a/web/index.html b/web/index.html index 43d0a4f..ed22df7 100644 --- a/web/index.html +++ b/web/index.html @@ -1,42 +1,155 @@ - - - - Familienduell + + + Familien Duell + + + + + + + - - - -
-

Familien Duell

- Server IP-Adresse: - +
+ + +
+



+
+ + + + + + + + + + + + + + + + + +
GlobalServerIntroSchweinchenOptionenFinalmodus
+
+
+ + +
+ Blackscreen: +
+ Multiplikator:
+
+
+
+
+ + + +
+

+ + + + + + + +
Punkte Links:
Punkte Rechts:
+
+
+ + + +
+ Spieler 1:
+ Spieler 2:
+ Frage:
+ Alternative Antwort:

+
+
+
+ + + + + +
Fragenliste:
+ +
+
+ +
+ + + +
- - +
+ + + + + \ No newline at end of file diff --git a/web/js/websocket.js b/web/js/websocket.js index f6feb22..a2cbec0 100644 --- a/web/js/websocket.js +++ b/web/js/websocket.js @@ -1,13 +1,7 @@ var retrys = 0; -var ip = localStorage.getItem("ip"); -var viewOnly = false; -if(window.location.href.indexOf("ip")!==-1) { - ip = window.location.href.split("ip=")[1]; - viewOnly = true; -} - -var WSPort = 8080; +var WSPort = 8081; +var IP = (location.host +"").split(":")[0]; var isWebsocketConnected = false; var connTimer = null; var sounds = true; @@ -19,6 +13,12 @@ var isFinalMode = false; var player2 = false; var runde = 1; +var viewOnly = false; +if(window.location.href.indexOf("viewonly")!==-1) { + ip = window.location.href.split("ip=")[1]; + viewOnly = true; +} + $(document).ready(function() { $("#displayBtn").click(function() { $("#startDiv").hide(); @@ -66,12 +66,12 @@ $(document).ready(function() { var connectWs = function() { - ws = new WebSocket('ws://'+ip+':'+WSPort); + ws = new WebSocket('ws://'+IP+':'+WSPort); ws.onopen = function() { $("#notConnected").hide(); - $("#connected").text("Verbunden mit: "+'ws://'+ip+':'+WSPort); + $("#connected").text("Verbunden mit: "+'ws://'+IP+':'+WSPort); $("#connected").show(); isWebsocketConnected = true; loadQuestions();