你如何使用NodeJS在套接字上进行HTTP GET请求?

我正在使用硬件设备(我没有创build),它有一个标准的方式通过套接字连接与它通信。 设备通过联系我的服务器(NodeJS服务器)启动套接字连接。

我已经成功地build立了一个套接字连接…

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 newb,所以我花了大约3-4小时淘金的计算器和谷歌的答案迄今没有成功。

弄清楚了! 感谢@彼得里昂的build议。 但是,答案相当简单,我只需要进一步阅读net.Socket类的NodeJS文档。

秘密是两个重要的… 1)在NodeJS文档net.Socket它解释了类可以作为客户端与Socket.event.connect

2)我需要手动写入HTTP GET。 这个职位帮我解答。

这是我如何做到的。 请随时对此方法发表评论。

 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

我的第一个想法是:

不知道这是否会实际工作,但似乎值得尝试。