eco-server
Version:
A data driven, UDP streamed Arduino robot for the 2014 Robot Challenge in Vienna, Austria.
52 lines (39 loc) • 1.04 kB
JavaScript
var util = require('util'),
EE = require('events').EventEmitter,
dgram = require('dgram');
var ecoBotServer = function(port) {
var self = this,
DBstate = false,
buffer = '',
jsObject = '';
function init(ecoPort) {
var server = dgram.createSocket("udp4");
server.on("error", function (e) {
buffer = '';
});
server.on("message", function (data, rinfo) {
emitNewMessage(data);
});
server.bind(ecoPort);
};
function emitNewMessage(data) {
buffer += data;
var boundary = buffer.indexOf('|');
while(boundary !== -1) {
if (buffer.length > 1000) buffer = '';
var input = buffer.substr(0, boundary);
buffer = buffer.substr(boundary + 1);
boundary = buffer.indexOf('|');
try {
jsObject = JSON.parse(input);
self.emit('sensor', jsObject);
nosql.insert(jsObject);
} catch(e) {
buffer = '';
}
}
};
init(port);
};
util.inherits(ecoBotServer, EE);
module.exports = ecoBotServer;