如何使用socat使Sinatra在两个端口上侦听

时间:2019-07-17 19:01:09

标签: ruby sinatra socat

我有一个经典的Sinatra应用程序,可以在两个端口上进行访问。将其迁移为模块化样式后,第二个端口将不再起作用。

我最初的实现是:

require 'sinatra'

set :port, 8080
set :bind, '0.0.0.0'

----some routes-----
...

最终的实现是:

require 'sinatra/base'
require_rel 'lib'

class MyApp < Sinatra::Base

  register Sinatra::SomeRegister
  helpers Sinatra::SomeHelper

set :port, 8080
set :bind, '0.0.0.0'

----some routes-----
...
run!
end

应用程序使用以下命令运行:

socat tcp-l:8181,fork,reuseaddr tcp:localhost:8080 &
ruby /path/my_app.rb

应用程序不再在端口8181上响应。

1 个答案:

答案 0 :(得分:0)

解决方法是先安装socat:

apt-get update && apt-get --allow-unauthenticated -y install socat