1 回限りの HTTP サーバーを作成して単一のコールバックを処理しようとしていますが、Ruby で空いている TCP ポートを見つけるのに助けが必要です。
これは私がやっていることの骨組みです:
require 'socket'
t = STDIN.read
port = 8081
while s = TCPServer.new('127.0.0.1', port).accept
puts s.gets
s.print "HTTP/1.1 200/OK\rContent-type: text/plain\r\n\r\n" + t
s.close
exit
end
(最初の接続に標準入力をエコーし、その後終了します。)
リッスンする空きポートを自動的に見つけるにはどうすればよいですか?
これは、一意のジョブ ID でコールバックするリモート サーバーでジョブを開始する唯一の方法のようです。その後、このジョブ ID を照会してステータス情報を取得できます。元の設計者が、ジョブをスケジュールするときにジョブ ID を返すことができなかった理由はわかりません。複数のコールバックとの競合が発生する可能性があるため、単一のポートは使用できません。このようにして、ポートは +-5 秒間だけ使用されます。