繁体   English   中英

将node.js中的UDP套接字从Application传输到HTTP

[英]Transfer UDP socket in node.js from Application to HTTP

是否可以通过NodeJS将来自应用程序的Socket传输到http?

我发送我的套接字用UDP或TCP中的应用程序(用c ++)(如果不可能在UDP中)到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。

这是一个完整的示例,其中包含一个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每个客户端加入某个房间。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM