使用Ruby的音频流中继

时间:2014-01-01 17:57:44

标签: ruby

我正在尝试使用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

理想情况下,我希望只有一个音频流连接。

有什么想法吗?

1 个答案:

答案 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