2013-06-11 69 views
2

我正在寻找通过UDP连接正在检索的数据创建Web服务,并决定使用Node.js和Socket.IO但是,我认为这种组合不会给我想要的结果。我希望有人能够指引我走向正确的方向。从UDP套接字转发数据到HTTP服务器Node.js

现在,我有以下几点:

// require http, socket and socket.io 
var http  = require('http'); 
var dgram = require('dgram'); 
var socketio = require('socket.io'); 

// setup HTTP server, Socket.IO and UDP Socket 
var server = http.createServer(handleRequest), 
    io = socketio.listen(server), 
    socket = dgram.createSocket("udp4"); 

// Every time I receive a UDP Message 
socket.on("message", function(msg,rinfo) { 
    // create a buffer we will store to 
    var buffer = new Buffer(msg.length); 

    // copy entire message into buffer 
    msg.copy(buffer, 0, 0, msg.length); 

    // if the message has length > 3 
    if (buffer.length > 3) {     
      .... take data off the socket .... 

      // Create an XML document 
      var xml = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n"; 
      xml += ... ; 
      xml += ... ; 

      // emit a udp message event 
      io.sockets.emit('udp message', xml);     
    } 
}); 

function handleRequest(req, res) { 
    res.writeHead(200, {'content-type': 'text/html'}); 
    res.end("<!doctype html> \ 
     <html><head> \ 
     <script src='/socket.io/socket.io.js'></script> \ 
     <script> \ 
      var socket = io.connect('localhost', {port: 8888}); \ 
      socket.on('udp message', function(message) { res.end(message) }); \ 
     </script></head></html>"); 
} 

socket.bind(9876); 
server.listen(8888); 

一切正常recv'ing的UDP数据流,创建XML文档,我可以看到XML被发送到WebSocket的,但是,我不能检索XML。基本上,我想要一个用户连接到Web服务后连续流式传输的XML

想法? 丹尼斯

回答

1

此行可疑看起来对我说:

socket.on('udp message', function(message) { res.end(message) }); 

客户端代码在浏览器中运行,则无法访问res对象。你可以尝试alert代替:

socket.on('udp message', function(message) { alert(message) }); 

在实际应用中,你可能会要处理的消息,并相应修改网页的HTML。