Я работаю над тестовым жгутом, который взаимодействует с другим приложением узла и проверяет правильность работы другого приложения. Мне нужно уметь слушать два разных протокола на двух разных портах в том же процессе в node.js. В частности, я перехватываю простой текстовый протокол прерывания строки (acceptorone) и HTTP-запросы (acceptortwo).Можно ли прослушивать два файла net.createServer() в одном процессе node.js?
настоящее время у меня это:
var acceptorone = net.createServer();
acceptorone.listen(portone);
var acceptortwo = http.createServer();
acceptortwo.listen(porttwo);
Но когда я пытаюсь это я получаю Error: listen EADDRINUSE
. Оба кодекса работают нормально независимо, все нормально, если один из прослушиваемых() s закомментирован.
Популяция немного портит решение, которое включает в себя отключение нескольких процессов. Однако это работает в тестовой среде, поэтому мне нужно держать все в одном процессе. Приложения, такие как statsd, не имеют никаких проблем с одновременным подключением TCP и UDP, поэтому я не уверен, почему было бы ограничение на одновременное прослушивание нескольких сокетов TCP. Может ли кто-нибудь пролить свет на этот вопрос? Благодарю.
Aha! Поскольку это было в тестовой среде, серверы создавались и уничтожались неоднократно. Я был близок() к одному из акцепторов, а не к тем и другим. Это привело к тому, что я видел. Спасибо за вашу помощь! – wickedchicken
Отлично; Я думаю, вы должны добавить это как ответ самостоятельно, так что будущие посетители будут находить информацию более легко: _погрузите свою тестовую инфраструктуру. :) – sarnold