私は、他のノードアプリケーションとやり取りし、他のアプリケーションが正しく動作することを検証するテストハーネスに取り組んでいます。 node.jsの同じプロセスで、2つの異なるポートで2つの異なるプロトコルを聞くことができる必要があります。具体的には、単純な改行テキストプロトコル(acceptorone)とHTTP要求(acceptortwo)をインターセプトしています。私はこれを試してみてください、私はError: listen EADDRINUSE
を得るときしかし1つのnode.jsプロセスで2つのnet.createServer()をリッスンすることはできますか?
var acceptorone = net.createServer();
acceptorone.listen(portone);
var acceptortwo = http.createServer();
acceptortwo.listen(porttwo);
:
は、私は現在、これを持っています。どちらのcodepathも独立して動作しますが、listen()のいずれかがコメントアウトされていれば問題ありません。
ビットを周回すると、いくつかのプロセスをフォークオフするソリューションが生成されます。しかし、これはテストフレームワークで実行されているので、すべて同じプロセス内に保つ必要があります。 statsdのようなアプリケーションでは、同時にTCPとUDPの接続を受け付けるクォームがないので、同時に複数のTCPソケットでリッスンすることに制限があるのはなぜか分かりません。誰もが問題に光を当てることができますか?ありがとう。
Aha!これがテストフレームワークであったため、サーバーは繰り返し作成され、破棄されていました。私はアクセプタの1つだけをクローズ(閉じ込め)していました。これは私が見ていたEADDRINUSEにつながります。ご協力いただきありがとうございます! – wickedchicken
優秀;私は、あなた自身の答えとしてそれを追加するべきだと思います。将来の訪問者は、より簡単に情報を見つけることができます。 :) – sarnold