【问题标题】:How can you make an HTTP GET request OVER a socket using NodeJS?如何使用 NodeJS 通过套接字发出 HTTP GET 请求?
【发布时间】:2013-08-29 23:39:47
【问题描述】:

我正在使用一种硬件设备(我没有创建),该设备具有通过套接字连接与其通信的标准方式。设备通过联系我的服务器(有问题的 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 和谷歌寻找答案,但到目前为止没有成功。

【问题讨论】:

    标签: node.js sockets http get


    【解决方案1】:

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

    秘密是双重的...... 1) 在net.Socket 的 NodeJS 文档中,它解释了类可以用作带有 Socket.event.connect 的客户端。

    2) 我需要手动.write 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

    【讨论】:

      【解决方案2】:

      我的第一个想法是:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-06
        • 1970-01-01
        • 2015-08-21
        • 2018-04-25
        相关资源
        最近更新 更多