2

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

我已经成功地建立了一个套接字连接......

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 和 google 以获得迄今为止没有成功的答案。

4

2 回答 2

7

弄清楚了!感谢@peter-lyons 的建议。然而,答案相当简单,我只需要进一步阅读有关net.Socket类的 NodeJS 文档。

秘密是双重的...... 1)在 net.Socket 的NodeJS文档中,它解释了该类可以用作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');
    });

});

...和繁荣

于 2013-08-29T15:39:47.533 回答
0

我的第一个想法是:

不知道这是否真的有效,但似乎值得一试。

于 2013-08-28T20:57:43.990 回答