2014-01-21 4 views
0

У меня проблемы с небольшими приложениями, которые я разрабатываю.Вызов socket.io из сокета dgram udp4

У меня есть Arduino с датчиком температуры, я хотел отправить значения в службу nodejs и показать его на веб-странице. Я хотел использовать socket.io, но я просто могу использовать UDP-соединение от arduino до сервера (ethernet). Просто чтобы обновить значение датчика, кажется, что я должен вызвать сокет io из службы UDP, но я не могу.

My socket.io, который работает, когда я вызываю его с веб-страницы.

var io = require('socket.io').listen(3000); 
io.sockets.on('connection', function (socket) { 
socket.on('message', function (message) { 
    console.log("Got message: " + message); 
    io.sockets.emit('SensorList', { 'temperature': temp }); 
     }); 
}); 

Это служба UDP, который считывает пакеты ARDUINO:

var dgram = require("dgram"); 
var server = dgram.createSocket("udp4"); 
var fs = require('fs'); 
**var io = require('socket.io');** 

var crlf = new Buffer(2); 
crlf[0] = 0xD; //CR - Carriage return character 
crlf[1] = 0xA; //LF - Line feed character 
server.on("message", function (msg, rinfo) { //every time new data arrives do this: 
    console.log("server got: " + msg.readUInt16LE(0) + " from " + rinfo.address + ":" + rinfo.port); // you can comment this line out 

    **var socket = io.connect('http://localhost:3000'); 
    socket.on('connect', function() { 
    socket.send(msg.readUInt16LE(0)); 
    });** 

}); 

server.on("listening", function() { 
    var address = server.address(); 
    console.log("server listening " + address.address + ":" + address.port); 
}); 

server.bind(6000); //listen to udp traffic on port 6000 

Ошибка является: вар сокет = io.connect ('http://localhostit.is:3000');^ TypeError: Объект # не имеет метода 'connect' на Socket. (/Users/xfr/Documents/nodejs/temp1/app2.js:15:19) на Socket.EventEmitter.emit (events.js: 98: 17) в UDP.onMessage (dgram.js: 437: 8)

Если я уничтожу всю часть io, я могу видеть значения в консоли. Если есть еще один способ смешать 2 службы в одном ... скажите мне несколько подсказок, и я сделаю поиск. Спасибо.

ответ

0

Сделано!

2 в 1 ...

var http = require('http'), 
    dgram = require('dgram'), 
    socketio = require('socket.io'); 
var fs = require('fs'); 
var app = http.createServer(), 
    io = socketio.listen(app), 
    socket = dgram.createSocket('udp4'); 

var crlf = new Buffer(2); 
crlf[0] = 0xD; //CR - Carriage return character 
crlf[1] = 0xA; //LF - Line feed character 

socket.on('message', function(content, rinfo) { 
    console.log('got message', content.readUInt16LE(0), 'from', rinfo.address, rinfo.port); 
    io.sockets.emit('udp message', content.readUInt16LE(0)); 

}); 

socket.bind(6000); 
app.listen(8000); 

На стороне веб-страницы:

src="socket.io.min.js" 
src="jquery.min.js" 
<script> 
var socket = io.connect('http://local_host.com:8000'); 

socket.on('udp message', function(msg) { 
    console.log(msg) ; 
    temperature = msg/100; 
    $('#temperature h1').html(temperature+'&deg;C'); 

}); 

</script> 

привязывать/слушать вопросы новичка.

+0

затем отметьте свой ответ как правильный для будущих людей –

Смежные вопросы