2013-06-11 68 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。