我需要使用node.js编写最大的轻量级应用程序,它连接到不同的服务器,并处理来自它的流。在curl中,我可以使用以下命令执行此操作:
curl -X MYOWNMETHOD http://myserver/
我发现它已实施:https://github.com/joyent/node/issues/6422 但是,如果没有额外的中间件,如何才能执行此类请求?也许有人做过类似的事情吗?
我试过像这样使用smth,但回调没有被执行,应用只是挂起..不知道为什么。如果我在任何网站上使用GET请求 - 这是有效的。如果我使用自定义请求 - 套接字挂起。如果我使用curl -X访问服务器 - 这也有效。
var net = require('net');
var options = {
method : 'OWNMETHOD',
host : 'someserver',
port : 80,
user : 'test',
password : 'test',
};
var client = net.connect({port: options.port, host: options.host}, function(){
console.log('client connected');
client.write(
options.method + ' / HTTP/1.1\r\n' +
'Authorization: Basic ' + new Buffer(options.user + ':' + options.password).toString('base64') + '\r\n' +
'User-Agent: sexy/7.26.0\r\n' +
'Host: ' + options.host + '\r\n' +
'Accept: */*\r\n' // should be TWO \r\n to make this work everywhere
);
});
// Fires only for GET method
client.on('data', function(data) {
console.log('data');
//console.log(data.toString());
//client.end();
});
client.on('end', function() {
console.log('client disconnected');
});
client.on('timeout', function() {
console.log('timeout');
});
client.on('close', function() {
console.log('closed');
});
UPD:发现错误:我忘了在标题中添加第二个\ r \ n。现在它工作正常。