2012-03-03 19 views
5

是否可以通过NodeJS将来自应用程序的套接字传输到http?将Node.js中的UDP套接字从应用程序传输到HTTP

我用UDP或TCP(如果不可能在UDP中)发送套接字到应用程序(使用C++)到NodeJS。

我从剧本的NodeJS:

var server = dgram.createSocket("udp4"); 
server.on("message", function (content, rinfo) 
{ 
    console.log("socket: " + content + " from " + rinfo.address + ":" + rinfo.port); }); 
    server.on("listening", function() { 
}); 
server.bind(7788); 

到现在确实该功能,但再怎么我的插座传输到Socket.io例如?

我想将套接字发送到Socket.io(例如)以将套接字传输到HTTP。通过使用这样的功能,例如,但不更新与socket.io建立连接:

io.sockets.on('connection', function (socket) { 
    socket.emit(content); 
}); 

感谢您的帮助。

++ Metra。

回答

8

下面是一个使用socket.io服务器的完整示例,该服务器发出一个非常简单的页面(它只会将所有消息记录到控制台)和一个UDP套接字侦听消息,并将它们传递给所有连接的客户端:

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

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

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

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: 8000}); \ 
      socket.on('udp message', function(message) { console.log(message) }); \ 
     </script></head></html>"); 
} 

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

更新:作为io.sockets.emit所示,UDP端口7788上接收到的所有消息被发送到所有连接的客户端。如果您想根据消息中的某些数据或类似的数据路由它们,可以使用Socket.IO的“房间”功能:io.sockets.of(someRoom).emit。在Socket.IO的连接处理程序中,您可以将每个客户端的IP地址设置为join

+0

嘿,谢谢你,我要测试:)。 – Metra 2012-03-04 06:54:57

+0

我很确定socket.io是一个主要围绕WebSockets的包装。 WebSockets是基于TCP的。 http://tools.ietf.org/html/rfc6455阅读摘要部分。 – Kevin 2013-04-23 01:57:55