reconnecting websockets

This commit is contained in:
Astro 2010-12-06 19:19:52 +01:00
parent fb00a2f575
commit 95fbd1e7d2
2 changed files with 57 additions and 46 deletions

57
quiz.js
View File

@ -49,34 +49,39 @@ function loadQuizData(done) {
});
}
var url = 'ws://' + document.location.host + '/';
var ws = new WebSocket(url, '*');
var ws, sendToBackend, onBackendMessage;
function setupWs() {
var url = 'ws://' + document.location.host + '/';
ws = new WebSocket(url, '*');
ws.onerror = function(e) {
console.error(e.message);
};
ws.onclose = function() {
console.error('WebSocket closed');
};
var onBackendMessage;
ws.onmessage = function(data) {
try {
console.log('fromBackend: ' + data);
var msg = JSON.parse(data);
if (onBackendMessage)
onBackendMessage(msg);
} catch(e) {
ws.onerror = function(e) {
console.error(e.message);
}
};
var sendToBackend = function(msg) {
console.log('toBackend: ' + JSON.stringify(msg));
ws.send(JSON.stringify(msg));
};
ws.onopen = function() {
/* TODO: rm debug */
sendToBackend({ nedap: "ping" });
};
setupWs();
};
ws.onclose = function() {
console.error('WebSocket closed');
setupWs();
};
ws.onmessage = function(data) {
try {
console.log('fromBackend: ' + data);
var msg = JSON.parse(data);
if (onBackendMessage)
onBackendMessage(msg);
} catch(e) {
console.error(e.message);
}
};
sendToBackend = function(msg) {
console.log('toBackend: ' + JSON.stringify(msg));
ws.send(JSON.stringify(msg));
};
ws.onopen = function() {
/* TODO: rm debug */
sendToBackend({ nedap: "ping" });
};
}
setupWs();
function Timer() {

View File

@ -5,26 +5,32 @@ var wsc = require('websocket-client');
var frontend;
/* TODO: url */
var nedap = new wsc.WebSocket('ws://localhost:8080/', 'quiz-nedap');
nedap.onopen = function() {
console.log('NEDAP opened');
nedap.send('nedap-kneemFothbedchoadHietEnobKavLub1');
};
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);
console.log({ fromNedap: msg });
frontend.send(JSON.stringify({ nedap: msg }));
} catch (e) {
console.error(e.stack);
}
};
var nedap;
function connectNedap() {
nedap = new wsc.WebSocket('ws://localhost:8080/', 'quiz-nedap');
nedap.onopen = function() {
console.log('NEDAP opened');
nedap.send('nedap-kneemFothbedchoadHietEnobKavLub1');
};
nedap.onclose = function() {
console.log('NEDAP closed');
connectNedap();
};
nedap.onerror = function(e) {
console.log('NEDAP error: ' + e.message);
connectNedap();
};
nedap.onmessage = function(data) {
try {
var msg = JSON.parse(data);
console.log({ fromNedap: msg });
frontend.send(JSON.stringify({ nedap: msg }));
} catch (e) {
console.error(e.stack);
}
};
}
connectNedap();
var server = Connect.createServer(
Connect.logger(),