У меня есть очень простой сервер node.js:
var http = require("http");
var server = http.createServer(function(req, res){
console.log("Got request");
res.writeHead(200, {"Content-Type":"text/plain"});
res.end("Hi there!");
});
server.listen(3004);
Я могу получить к нему доступ через свой браузер и отправив запрос от клиента Node.js:
var http = require("http");
var options = {
"hostname": "localhost",
"port": 3004,
"path": "/",
"method": "GET"
};
var req = http.request(options, function(res){
var data = "";
res.on("data", function(chunk){
data += chunk;
});
res.on("end", function(){
console.log(data);
});
});
req.on("error", function(e){
console.log(e.stack);
});
req.end();
Теперь, если я использую пакет localtunnel для «размещения» этого сервера (lt --port 3004
), я теперь получаю новое имя хоста, к которому я должен иметь доступ к нему из Интернета.И действительно, я могу легко получить к нему доступ из браузера.
Однако, если я пытаюсь отправить запрос https (не http, потому что lt
использует https) от клиента Node.js, с новым именем хоста, запрос отклоняется, и я получаю эту ошибку:
Ошибка: подключить ECONNREFUSED 138.197.63.247:3004 в TCPConnectWrap.afterConnect [as oncomplete]
Поэтому невозможно получить доступ к веб-серверу node.js, когда он размещенс местным туннелем?Или, если есть (может быть, с использованием модуля 3-ей части), может кто-нибудь, пожалуйста, подскажите мне, как это будет сделано, так как Google абсолютно бесполезен.Заранее спасибо.
EDIT1 : я должен отметить, что на стороне сервера сообщение об ошибке предлагает «проверить мой брандмауэр, но я понятия не имею, что в моем брандмауэре могло блокировать это, Я не уверен, что делать. (Помните, что это работает при подключении из браузера ??)
EDIT2 : Кстати, я попытался полностью удалить брандмауэр (получил тот же результат)