我正在使用硬件设备(我没有创建),它具有通过套接字连接与之通信的标准方法。设备通过联系我的服务器(相关的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和谷歌寻找答案,迄今为止没有成功。
答案 0 :(得分:6)
想出来!感谢@ 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
答案 1 :(得分:0)
我的第一个想法是:
message.connection = sock
writeHead
等)不知道这是否真的有效,但似乎值得尝试。