我正在尝试在 Heroku 上托管一个简单的 TCP 服务器。
我正在使用 Ruppell 的 Sockets Heroku 插件。我的 Procfile 看起来像这样:
web: bundle exec ruby web.rb -e "production" -p $PORT
socket: ./lib/sockets-connect/rs-conn ruby ./tcpserver.rb
tcpserver.rb 看起来像这样:
require 'eventmachine'
module EchoServer
def post_init
puts "-- someone connected to the echo server!"
end
def receive_data data
send_data ">>>you sent: #{data}"
close_connection if data =~ /quit/i
end
def unbind
puts "-- someone disconnected from the echo server!"
end
end
EventMachine.run {
EventMachine.start_server "127.0.0.1", ENV['RUPPELLS_SOCKETS_LOCAL_PORT'], EchoServer
}
RUPPELLS_SOCKETS_FRONTEND_URI
是tcp://22405.339f7303-45df-4e9c-a049-5a15c47168ab.sockets.ruppells.io:22405/
。
当我这样做
telnet tcp://22405.339f7303-45df-4e9c-a049-5a15c47168ab.sockets.ruppells.io 22405
时,我会得到 Connection closed by foreign host.
。
我对 TCP 的经验很少。知道如何解决这个问题吗?
对于其他遇到此问题的人,您的本地服务器必须绑定到
0.0.0.0
而不是 127.0.0.1
。