我正在尝试创建一个一次性 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 秒。