在我的Rails 3.2应用程序中,我使用的嵌入式JavaScript图表来自TradingView。但是,似乎port 443 must be opened for it to show。因此,我试图检查端口是否对用户开放,如果不是,则显示除图表外的内容。检查端口是否在Rails中打开
我发现这个职位,"Ruby - See if a port is open"并一直在努力这样回答的:
require 'socket'
require 'timeout'
def port_open?(ip, port, seconds=1)
Timeout::timeout(seconds) do
begin
TCPSocket.new(ip, port).close
true
rescue Errno::ECONNREFUSED, Errno::EHOSTUNREACH
false
end
end
rescue Timeout::Error
false
end
但是,我修改它是:
def port_open?(ip, port=443, seconds=1)
由于端口检查将始终是相同的为了我。
我打电话的方法是这样的:
@ip = request.remote_ip
test = port_open?(@ip)
我发现这个问题时,我是在防火墙后面。
我不明白的是我现在可以看到图表,我不在防火墙后面,但是如果我在本地运行下面的代码,我可以看到图表,但我收到false
。
但是,如果我更改port=3000
我收到了真实。我究竟做错了什么?谢谢!