iDV*_*DVB 2 sockets get http node.js
我正在使用硬件设备(我没有创建),它具有通过套接字连接与之通信的标准方法.设备通过联系我的服务器(相关的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
});
Run Code Online (Sandbox Code Playgroud)
但是,我现在需要通过该套接字连接发送HTTP GET请求.到目前为止,我能弄清楚如何做到这一点的唯一方法是手动 socket.write我自己写.
我希望的是一些像http这样的课程可以让你做类似...
http.get(socket, function(res){ // Handler code })
Run Code Online (Sandbox Code Playgroud)
我几乎肯定这个问题对我来说是NodeJS的新手,所以我花了大约3-4个小时来搜索stackoverflow和谷歌寻找答案,迄今为止没有成功.
弄清楚了!感谢@ peter-lyons提出的建议.但是,答案很简单,我只需要进一步阅读net.Socket类的NodeJS文档.
这个秘密有两个...... 1)在NodeJS docs for 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');
});
});
Run Code Online (Sandbox Code Playgroud)
......和BOOM
我的第一个想法是:
message.connection = sock
writeHead
等)不知道这是否真的有效,但似乎值得尝试。