我正在尝试使用em-proxy开发音频流中继。
身份验证和日志记录等功能非常出色。问题是,每个新的传入连接都会导致与音频流的新连接。
我的部分代码:
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
理想情况下,我希望只有一个音频流连接。
有什么想法吗?
答案 0 :(得分:1)
我不熟悉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页上看到一个示例:http://everburning.com/images/2009/02/eventmachine_introduction_10.pdf