基于Ruby的音频流中继
我试图开发一个音频流中继使用 像身份验证和日志记录这样的工作效果很好。问题是,每个新的传入连接都会导致到音频流的新连接 我的部分代码:基于Ruby的音频流中继,ruby,Ruby,我试图开发一个音频流中继使用 像身份验证和日志记录这样的工作效果很好。问题是,每个新的传入连接都会导致到音频流的新连接 我的部分代码: require 'em-proxy' host = "0.0.0.0" port = 9889 puts "listening on #{host}:#{port}..." Proxy.start(:host => host, :port => port) do |conn| conn.server :srv, host: "127.0.0
require 'em-proxy'
host = "0.0.0.0"
port = 9889
puts "listening on #{host}:#{port}..."
Proxy.start(:host => host, :port => port) do |conn|
conn.server :srv, host: "127.0.0.1", port: 8000
conn.on_data do |data|
# logging happens here
data
end
conn.on_finish do |backend, name|
# logging too
unbind
end
end
理想情况下,我希望只有一个连接到音频流
有什么想法吗?我不熟悉
em proxy
,但一年前我确实在EventMachine上做了一个项目
您要做的是在启动代理进程时连接到音频流。除此之外,您还将维护一个客户池。每次从音频流接收数据时,您都将在客户端池中迭代并中继接收到的数据
以下是EventMachine模板:
module MyRadioClient
def post_init
some_client_list.add(self)
end
def receive_data data
# do nothing
end
def unbind
some_client_list.remove(self)
end
end
您将使用以下命令启动模块:
EventMachine.run {
EventMachine.start_server "0.0.0.0", 4567, MyRadioClient
}
现在人们可以通过端口4567连接,而你将忽略他们发送的任何内容
接下来,您需要连接到您的音频流,该音频流在接收到数据后将中继到您的无线电客户端
您可以在本文档的第20页上看到一个示例:您能展示一些代码吗?问题还不清楚。哦,对不起@Guillermebernal。只是粘贴了一些代码。感谢您的关注。您正在尝试复制8000端口的传出数据?我没有em proxy的实际经验,但它看起来是为中继连接而定制的,而不是单向数据流。TCP是双向的,所以每次客户端连接到代理服务器时,em代理服务器都应该创建到源服务器的新连接,这很有意义。这似乎就做到了!谢谢你@NielsB。谢谢你的回答。