UNPKG

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
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;