diff --git a/nedap/server.js b/nedap/server.js index 7b94311..0a3bf04 100644 --- a/nedap/server.js +++ b/nedap/server.js @@ -1,5 +1,5 @@ var Connect = require('connect'); -var spacesocket = require('../lib/spacesocket'); +var spacesocket = require('spacesocket'); var ltx = require('ltx'); var WS_PROTOCOL = 'nedap-kneemFothbedchoadHietEnobKavLub1'; @@ -84,19 +84,23 @@ spacesocket.attach(server, function(conn) { backend = conn; conn.on('data', function(data) { - var msg = JSON.parse(data); - console.log({msg: msg}); - if (msg.joker) { - question = msg.joker.question; - answers = msg.joker.answers; - scores = []; - for(var i = 0; i < answers.length; i++) - scores[i] = 0; - } - if (msg.clear) { - question = null; - answers = null; - scores = null; + try { + var msg = JSON.parse(data); + console.log({msg: msg}); + if (msg.joker) { + question = msg.joker.question; + answers = msg.joker.answers; + scores = []; + for(var i = 0; i < answers.length; i++) + scores[i] = 0; + } + if (msg.clear) { + question = null; + answers = null; + scores = null; + } + } catch (e) { + console.error(e.stack); } }); diff --git a/quiz.js b/quiz.js index 369912f..4618564 100644 --- a/quiz.js +++ b/quiz.js @@ -49,6 +49,27 @@ function loadQuizData(done) { }); } +var url = 'ws://' + document.location.host + '/'; +var ws = new WebSocket(url, 'quiz'); + +ws.onerror = function(e) { + console.error(e.message); +}; +ws.onclose = function() { + console.error('WebSocket closed'); +}; +var onBackendMessage; +ws.onmessage = function(data) { + try { + var msg = JSON.parse(data); + if (onBackendMessage) + onBackendMessage(msg); + } catch(e) { + console.error(e.message); + } +}; + + function Timer() { $('#timer').hide(); this.cb = null; diff --git a/server.js b/server.js new file mode 100644 index 0000000..461014c --- /dev/null +++ b/server.js @@ -0,0 +1,53 @@ +var Connect = require('connect'); +var spacesocket = require('spacesocket'); +var WS = require('websocket-client'); + +var frontend; + +/* TODO: url */ +var nedap = new WS.WebSocket('http://localhost:8080/', 'nedap-kneemFothbedchoadHietEnobKavLub1'); +nedap.onopen = function() { + console.log('NEDAP opened'); +}; +nedap.onclose = function() { + console.log('NEDAP closed'); +}; +nedap.onerror = function(e) { + console.log('NEDAP error: ' + e.message); +}; +nedap.onmessage = function(data) { + try { + var msg = JSON.parse(data); + frontend.send(JSON.stringify({ nedap: msg })); + } catch (e) { + console.error(e.stack); + } +}; + +var server = Connect.createServer( + Connect.logger(), + Connect.bodyDecoder(), + Connect.staticProvider(__dirname), + Connect.errorHandler({ dumpExceptions: true, showStack: true }) +); +server.listen(8081); + +spacesocket.attach(server, function(conn) { + if (conn.protocol === 'quiz') { + frontend = conn; + + conn.on('data', function(data) { + var msg = JSON.parse(data); + if (msg.nedap) + nedap.send(JSON.stringify(msg.nedap)); + }); + + var reset = function() { + frontend = null; + }; + conn.on('close', reset); + conn.on('error', reset); + } else { + conn.end(); + } +});