node.js - 与TCP服务器通信(data == JSON)

时间:2011-04-11 13:54:01

标签: json proxy tcp node.js router

我是node.js的新手,在上周末潜入了它,并通过各种示例和小教程玩得很开心。 现在我想为我的局域网开展一个小项目,并有一些问题让我自己走向正确的方向。

设定:
我的局域网上运行了服务器服务。可以通过TCP和/或HTTP(可以在特定端口上启用或禁用TCP或HTTP或两者)与该服务进行通信,并根据请求通过JSON发送和接收数据。 我基本上想要做的是为该服务创建一个基于node.js的Web接口,通过Web浏览器接收和发送JSON数据。

问题:
我已经知道如何基于node.js设置http服务器。但是现在我不知道如何创建一个基于node.js的客户端,它位于服务和webbrowser客户端之间,用于将数据从客户端传递到服务器,反之亦然。像路由器或代理的东西。

这是基于客户端(webbrowser)观点的基本方案:

发送:Web浏览器请求 - > node.js routes - >服务收到 接收:Webbrowser收到< - node.js routes< - service responds

的问题:
  - 转到TCP还是HTTP? (可能禁用HTTP服务器会节省一些资源) - 可能已经由this post回答了   - 是否有符合我需求的node.js软件包?   - 去一个框架(表达式?)或者说plain node.js就够了吗?   - 任何提示赞赏:)
编辑:
  - 是否可以绑定node.js中的eth0之类的网络设备而不是定义ip地址?

感谢您的帮助&&最好的问候 cefra

1 个答案:

答案 0 :(得分:1)

没有理由不能拥有REST HTTP服务。

使用类似express的内容来处理路由。

如果我正确理解您的问题,那么您可以在某个TCP端口上使用“foobar”编写Web服务,您可以通过该端口连接到节点。

所以,如果你使用express,你会写一些类似

的东西
app.get("/resources/", function(req, res) {
    var socket = new net.Socket();
    socket.connect(port, host, function() {
        socket.on("data", function(json) {
            res.contentType("json");
            res.send(json);
            socket.end();
        });
        socket.write(...);
    });
});

所以基本上你已经编写了一个http中间人,它通过TCP联系你的服务,然后根据你的HTTP请求的响应写下数据。