2011-04-11 119 views
1

我是新来的node.js,在上个周末潜入它,并与各种示例和小教程玩得开心。 现在我想为我的局域网开始一个小项目,并有几个问题让我自己走向正确的方向。node.js - 与TCP服务器通信(data == JSON)

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

问题:
我已经知道如何建立一个基于node.js的http服务器。但是现在我一直在寻找一个想法,即如何创建一个基于node.js的客户端,该客户端位于服务和webbrowser客户端之间,以通过客户端到服务器的数据,反之亦然。像路由器或代理。

这是基于客户端的(网页浏览器),一个基本方案的观点:

发送:请求的Webbrowser - > Node.js的路线 - >服务接收
接收:接收的Webbrowser < - Node.js的路线< - 服务响应

问题:
- 去为TCP或HTTP? (也许禁用HTTP服务器将省去一些资源) - 也许已经通过this post
回答 - 是否有任何node.js包可以满足我的需求?
- 寻找一个框架(表达式?)或将平原node.js足够?
- 任何提示赞赏:)
编辑:
- 是否有可能绑定像eth0网络设备内部node.js而不是定义的IP地址?

感谢您的帮助& &问候
cefra

+0

返回json的HTTP REST服务是您想要的吗? – Raynos 2011-04-11 14:48:34

+0

TCP或HTTP?如果这个服务产生了很多的请求/流量,那么TCP可能是更好的选择,如果不是的话:坚持HTTP,它更容易实现。 – jazgot 2011-04-11 15:15:01

回答

1

有没有理由,你为什么不能有一个REST HTTP服务。

使用类似express来处理路由。

如果我正确理解你的问题,那么你有一个web服务用“foobar”写在你可以连接到节点的某个TCP端口上。

因此,如果您使用

表达,你会写类似

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请求的响应。