我一直在用 Ruby drb 做一些测试。我有以下代码(只是在 ruby 文档中找到的示例代码)
服务器:
require 'drb/drb'
URI="druby://:9000"
class TimeServer
def get_current_time
return Time.now
end
end
FRONT_OBJECT=TimeServer.new; $SAFE = 1
DRb.start_service(URI, FRONT_OBJECT)
DRb.thread.join
客户:
require 'drb/drb'
SERVER_URI="druby://private-ip:9000"
DRb.start_service
timeserver = DRbObject.new_with_uri(SERVER_URI)
puts timeserver.get_current_time
如果我们都连接到同一个路由器(例如,共享相同的私有 ip xxx151 和 xxx155),则此方法有效。
但是,当我们在相距很远的机器上进行测试并将服务器 URI 更改SERVER_URI="druby://public-ip-of-server:9000"
为客户端时,我们会遇到连接超时。
有谁知道解决方案?路由器上的端口转发不是一种选择。