2011-04-11 139 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請求的響應。