Ruby drbでいくつかのテストを行っています。私は次のコードを持っています(ルビードキュメントにあるサンプルコードのみ)
サーバ:
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"
クライアント側に変更すると、接続タイムアウトが発生します。
誰かが解決策を知っていますか?ルーターでのポート転送はオプションではありません。