2013-08-28 82 views
1

我正在使用硬件設備(我沒有創建),它具有通過套接字連接與它進行通信的標準方式。設備通過聯繫我的服務器(有問題的NodeJS服務器)來啓動套接字連接。如何使用NodeJS在套接字上進行HTTP GET請求?

我已經成功地設置了......

var socketServer = net.createServer() 
.listen(9999, function(){ 
     console.log('SOCKET Listening at: http://localhost:9999'); 
}); 

socketServer.on('connection', function(sock) { 
    console.log('CONNECTED: ' + sock.remoteAddress +':'+ sock.remotePort); 
    console.log(sock); 
    // Need to fire HTTP GET HERE 
}); 

不過,我現在需要送過來的套接字連接的HTTP GET請求的套接字連接。到目前爲止,我可以想出如何做到這一點的唯一方法是手動 socket.write GET自己。

什麼,我希望的是一些諸如HTTP類,允許你做這樣的事......

http.get(socket, function(res){ // Handler code }) 

我幾乎可以肯定的問題是怎麼對我處於一個的NodeJS福利局,所以我花了大約3-4小時淘到stackoverflow和谷歌的答案迄今沒有成功。

回答

3

想通了!感謝@彼得里昂的建議。但是,答案相當簡單,我只需要進一步閱讀NodeJS文檔中有關NetSocket的更多信息。

的祕密是在文檔的NodeJS爲net.Socket它解釋說,類可以作爲一個客戶端Socket.event.connect二折...... 1)。

2)我需要。手動編寫 HTTP GET。 This post幫我解答。

這是我做到的。請隨時對此方法發表評論。

var socketServer = net.createServer() 
.listen(9999, function(){ 
     console.log('SOCKET SERVER Listening at: http://localhost:9999'); 
}); 

socketServer.on('connection', function(socket) { 
    console.log('SERVER CONNECTED: ' + socket.remoteAddress +':'+ socket.remotePort); 

    socket.on('data', function(data) { 
     console.log('SOCKET RESPONSE: ' + data); 
    }).on('connect', function() { 
     socket.write("GET /rest/whoami HTTP/1.1\r\n\r\n"); 
     console.log('SOCKET GET REQUEST SEND'); 
    }).on('end', function() { 
     console.log('SOCKET ENDED'); 
    }); 

}); 

...和BOOM