port to websocket library

This commit is contained in:
Astro 2011-10-14 02:56:16 +02:00
parent 48f6b35491
commit ccab3a3afe
2 changed files with 27 additions and 24 deletions

View File

@ -1,5 +1,5 @@
var Connect = require('connect'); var Connect = require('connect');
var wss = require('websocket-server'); var wss = require('websocket').server;
var ltx = require('ltx'); var ltx = require('ltx');
var WS_KEY = 'nedap-kneemFothbedchoadHietEnobKavLub1'; var WS_KEY = 'nedap-kneemFothbedchoadHietEnobKavLub1';
@ -44,7 +44,7 @@ var updateBackendTimeout;
function updateBackend() { function updateBackend() {
if (!updateBackendTimeout) { if (!updateBackendTimeout) {
updateBackendTimeout = setTimeout(function() { updateBackendTimeout = setTimeout(function() {
backend.send(JSON.stringify({ scores: scores })); backend.sendUTF(JSON.stringify({ scores: scores }));
updateBackendTimeout = undefined; updateBackendTimeout = undefined;
}, 50); }, 50);
} }
@ -126,12 +126,13 @@ var server = Connect.createServer(
Connect.errorHandler({ dumpExceptions: true, showStack: true }) Connect.errorHandler({ dumpExceptions: true, showStack: true })
); );
wss.createServer({ server: server }).on('connection', function(conn) { new wss({ httpServer: server }).on('req', function(req) {
var conn = req.accept(null, req.origin);
var authed = false; var authed = false;
conn.on('message', function(data) { conn.on('message', function(wsmsg) {
if (!authed) { if (!authed) {
if (data.toString() === WS_KEY) { if (wsmsg.utf8Data.toString() === WS_KEY) {
console.warn('Authorized WebSocket'); console.warn('Authorized WebSocket');
backend = conn; backend = conn;
authed = true; authed = true;
@ -147,7 +148,7 @@ wss.createServer({ server: server }).on('connection', function(conn) {
} }
} else { } else {
try { try {
var msg = JSON.parse(data); var msg = JSON.parse(wsmsg.utf8Data);
console.log({msg: msg}); console.log({msg: msg});
if (msg.joker) { if (msg.joker) {
question = msg.joker.question; question = msg.joker.question;

View File

@ -1,6 +1,6 @@
var Connect = require('connect'); var Connect = require('connect');
var wss = require('websocket-server'); var wss = require('websocket').server;
var wsc = require('websocket-client'); var wsc = require('websocket').client;
var irc = require('irc-js'); var irc = require('irc-js');
var frontend; var frontend;
@ -13,20 +13,20 @@ var frontend;
/* TODO: url */ /* TODO: url */
var nedap; var nedap;
function connectNedap() { function connectNedap() {
nedap = new wsc.WebSocket('ws://localhost/', 'quiz-nedap'); nedap = new wsc();
nedap.onopen = function() { nedap.on('connect', function() {
console.log('NEDAP opened'); console.log('NEDAP opened');
nedap.send('nedap-kneemFothbedchoadHietEnobKavLub1'); nedap.sendUTF('nedap-kneemFothbedchoadHietEnobKavLub1');
}; });
nedap.onclose = function() { nedap.on('close', function() {
console.log('NEDAP closed'); console.log('NEDAP closed');
connectNedap(); connectNedap();
}; });
nedap.onerror = function(e) { nedap.on('error', function(e) {
console.log('NEDAP error: ' + e.message); console.log('NEDAP error: ' + e.message);
connectNedap(); connectNedap();
}; });
nedap.onmessage = function(data) { nedap.on('message', function(data) {
try { try {
var msg = JSON.parse(data); var msg = JSON.parse(data);
console.log({ fromNedap: msg }); console.log({ fromNedap: msg });
@ -34,7 +34,8 @@ function connectNedap() {
} catch (e) { } catch (e) {
console.error(e.stack); console.error(e.stack);
} }
}; });
nedap.connect('ws://localhost/', 'quiz-nedap');
} }
connectNedap(); connectNedap();
@ -124,16 +125,17 @@ var server = Connect.createServer(
* WebSocket server * WebSocket server
*/ */
wss.createServer({ server: server }).on('connection', function(conn) { new wss({ httpServer: server }).on('request', function(req) {
var conn = req.accept(null, req.origin);
frontend = conn; frontend = conn;
conn.on('message', function(data) { conn.on('message', function(wsmsg) {
console.log({data:data});
try { try {
var msg = JSON.parse(data); var msg = JSON.parse(wsmsg.utf8Data);
if (msg.nedap) { if (msg.nedap) {
console.log({ toNedap: msg.nedap }); console.log({ toNedap: msg.nedap });
nedap.send(JSON.stringify(msg.nedap)); if (nedap)
nedap.sendUTF(JSON.stringify(msg.nedap));
} else if (msg.irc === "activate") { } else if (msg.irc === "activate") {
pushIrcInfo(); pushIrcInfo();
} else if (msg.buzzerLED) { } else if (msg.buzzerLED) {
@ -155,7 +157,7 @@ function sendToFrontend(obj) {
if (!frontend) if (!frontend)
return; return;
frontend.send(JSON.stringify(obj)); frontend.sendUTF(JSON.stringify(obj));
} }
server.listen(8081); server.listen(8081);