【问题标题】:Transfer UDP socket in node.js from Application to HTTP将 node.js 中的 UDP 套接字从应用程序传输到 HTTP
【发布时间】:2012-03-03 09:57:40
【问题描述】:

是否可以通过 NodeJS 将来自应用程序的 Socket 传输到 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);
});

感谢您的帮助。

++ 米特拉。

【问题讨论】:

    标签: http sockets node.js udp socket.io


    【解决方案1】:

    这是一个完整的示例,其中包含一个 socket.io 服务器、一个 Web 服务器发送一个非常简单的页面(它只会将所有消息记录到控制台)和一个侦听消息的 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 的连接处理程序中,您可以join 每个客户端到某个房间。

    【讨论】:

    • 我很确定 socket.io 是一个主要围绕 WebSockets 的包装器。 WebSockets 是基于 TCP 的。 tools.ietf.org/html/rfc6455阅读摘要部分。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-27
    • 2017-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-15
    • 1970-01-01
    相关资源
    最近更新 更多