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 要求を送信する必要があります。これまでのところ、これを行う方法を理解できる唯一の方法は、自分で GET を手動でsocket.write することです。

私が望んでいるのは、次のようなことができる http のようなクラスです...

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

この問題は、NodeJS の初心者であることが原因であるとほぼ確信しているため、約 3 ~ 4 時間かけてスタックオーバーフローとグーグルで答えを探しましたが、これまでのところ成功していません。

4

2 に答える 2

7

理解した!提案してくれた@peter-lyonsに感謝します。ただし、答えはかなり単純で、 net.Socketクラスに関する NodeJS ドキュメントをさらに読む必要がありました。

秘密は2つありました... 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 に答える