ошибка при использовании прокси узла

Я использую следующую программу, и когда я запускаю ее, я получаю следующую ошибку. Я смог запустить приложение, но когда я вставил в браузере localhost: 3000, я получил эту ошибку в консоли...

**Error: connect ECONNREFUSED**
    at exports._errnoException (util.js:746:11)
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1000:19)

Это программа У меня есть очень простое приложение узла всего с одним файлом со следующим кодом (это мой сервер/приложение/.js

var http = require('http'),
    httpProxy = require('http-proxy'),
    url = require('url');

proxy = httpProxy.createProxyServer({});

http.createServer(function (req, res) {



    switch (hostname) {
        case 'localhost':
            proxy.web(req, res, {target: 'http://localhost:9001'});
            break;

    }
}).listen(3005, function () {
    console.log('original proxy listening on port: ' + 3005);
});


http.createServer(function(req, res) {
    res.end("Request received on 9001");
}).listen(9056);

Я хочу запустить новый прокси-сервер, когда пользователь нажимает на какой-либо URL-адрес

Я использую этот модуль для этого, что я делаю неправильно?

https://github.com/nodejitsu/node-http-proxy

другое дело... когда я использую этот код, я получаю ошибку...

process.on('uncaughtException', function (err) {
    console.log(err);
});

это ошибка сейчас, есть идеи?

{ [Error: connect ECONNREFUSED]
  code: 'ECONNREFUSED',
  errno: 'ECONNREFUSED',
  syscall: 'connect' }
{ [Error: socket hang up] code: 'ECONNRESET' }

person Community    schedule 20.06.2015    source источник


Ответы (1)


http.createServer(function(req, res) {
    res.end("Request received on 9001");
}).listen(9056);

Ваш HTTP-сервер прослушивает порт 9056. Прокси-сервер пытается подключиться к HTTP-серверу на неправильном порту и выдает ошибку, когда соединение не может быть установлено. Чтобы избежать подобных ошибок в будущем, поместите порт в переменную:

var PORT = 9001;
http.createServer(function(req, res) {
    res.end("Request received on " + PORT);
}).listen(PORT);
person Juho    schedule 20.06.2015
comment
Большое спасибо! Проголосовал!, только один последний вопрос :) Предположим, я хочу проверить, действительно ли это работает, что вы предлагаете сделать? Может быть, какой-то модульный тест или что-то еще, что вы можете придумать... - person ; 20.06.2015
comment
Модульное тестирование короткого серверного скрипта, подобного этому, является проблемой, поскольку не существует чистых функций без побочных эффектов. Если сценарий не находится в стадии разработки, я бы сказал, что каждому серверу нужно дать разные ответы и протестировать его с помощью веб-браузера. Если вы можете сделать из этого что-то более сложное, возможно, стоит автоматизировать процесс. Вы можете использовать подходящую структуру, такую ​​как Protactor, но есть кривая обучения и процесс установки. Если вы хотите сделать простой тест, который выполняет свою работу, вы можете просто сделать http-запросы с разными заголовками имени хоста и проверить ответы. - person Juho; 20.06.2015
comment
не могли бы вы предоставить несколько шагов, как просто проверить это, я очень новичок в этой теме, и я хочу как-то убедиться, что это работает... Большое спасибо! - person ; 20.06.2015
comment
Например: сделайте 3 сервера для каждого из случаев переключения имени хоста we-broxy, как у вас в последних строках. Сделайте отдельный скрипт, который делает 3 запроса к прокси: один с localhost в качестве заголовка имени хоста, один как 127.0.0.1, один с чем-то еще. Затем просто проверьте, что, например, для локального хоста вы возвращаете то, что работает на порту 9001. Заголовки можно установить в поле параметров http-запроса. docs.nodejitsu.com/articles/HTTP/ клиенты/ - person Juho; 20.06.2015
comment
Я отмечаю это как ответ, не могли бы вы предоставить свой повтор в качестве ответа, пожалуйста? Что вы подразумеваете под созданием отдельного 3 сценария, не могли бы вы привести пример? Большое спасибо за поддержку! - person ; 20.06.2015
comment
Я имел в виду что-то вроде этого. Это самый простой способ протестировать такую ​​настройку, если вы не хотите углубляться в среду тестирования. Я не совсем уверен, что вы строите, но я думаю, вы можете изменить это в соответствии со своими потребностями. pastebin.com/4MZat16Y - person Juho; 20.06.2015
comment
Давайте продолжим это обсуждение в чате. - person ; 20.06.2015