2013-05-22 3 views
2

Я создаю проход через инспектор.nodejs - Как проверить, открыт ли удаленный сокет?

В принципе, я запускаю сервер сокетов (net.createServer) и клиент сокета (net.connect). В целях тестирования у меня нет ожидающего подключения к конечной точке.

Я хочу проверить, доступен ли разъём конечной точки. Если нет, nodejs должен ждать, пока не будет доступен сокет.

var net = require('net'); 
var inbound = net.createServer(); 
var outbound = net.connect({ 
    port: 8193 
}); 

inbound.listen(8192, function() { //'listening' listener 
    address = inbound.address(); 
    console.log('Server started on %j', address); 
}); 

inbound.on('connection', function (insock, outbound) { 
    console.log('CONNECTED ' + insock.remoteAddress + ':' + insock.remotePort); 
    insock.on('data', function (data, outbound) { 
     outbound.write(data); 
     console.log('DATA ' + data); 
    }); 
}); 

ответ

1

Лучший способ проверить, доступен ли какой-либо ресурс, - попытаться его использовать. Предварительное тестирование может быть вызвано рядом возражений:

  1. Если оно проверяет что-то отличное от фактического использования, оно может дать неправильный ответ.
  2. Если он тестирует те же вещи, что и фактическое использование, он просто расточительно избыточен.
  3. Ситуация может измениться между тестом и использованием.
+0

Я определенно тестирую его, но я не уверен, как восстановить приложение node.js, когда удаленный порт не открыт. Nodejs выбрасывает «Ошибка: connect ECONNREFUSED» – extensa5620

+0

Это то же самое, что и в случае, если вы просто попытаетесь его использовать. Каким бы ни было решение этого, это то же самое решение для случая «попробуй использовать». Вам не нужно писать один и тот же код дважды. – EJP

+2

Используйте 'outbound.on ('error', ...)', чтобы поймать эти ошибки, вместо того, чтобы на них нанести Node. – robertklep

Смежные вопросы