我有一个正在运行的 EventMachine 正在侦听 UDP 数据包。每次收到 UDP 数据包时,我都想使用 REST 调用将数据转发到某个数据库。我创建了一个 EM::Connection 子类,其中该receive_data
方法通过 REST 调用转发数据。
由于数据的频率很高,我想重用请求之间的连接(使用“keep-alive”),如果可能的话也使用管道。在不同呼叫之间共享连接的好方法是什么?
目前我的 UDPHandler 看起来像下面这样:
module Udp
module Collector
class UDPHandler < EM::Connection
def receive_data(data)
http = EventMachine::HttpRequest.new('http://databaseurl.com/').post body: data
end
end
end
end
此类调用如下:
EM.run do
EM.open_datagram_socket('0.0.0.0', 9000, Udp::Collector::UDPHandler)
end
我想过将请求对象设为类变量,但我认为在事件机器的上下文中这不是一个好主意。或者是吗?