我是一個EventMachine新手,所以有機會我完全錯誤地接近它。我試圖做的是在應用程序啓動時創建一個EM連接(實際上是一個Blather流,但這是一個EM :: Connection),然後我可以在需要時點擊它。現在,我可以Blather在此Sinatra應用程序中正確工作的唯一方法是每次都創建一個新連接,並將其封裝在EM.run塊中。在Sinatra應用程序中維護一個永久的EM連接
我一直在試圖確定async_sinatra是否有幫助。但是,如果請求異步發生,我實際上並不在意。我想這會很好,但我仍然沒有看到我會如何堅持請求之間的連接。
似乎在我的大腦中最有意義的解決方案是在Sinatra配置塊內的EM塊中設置連接,但是我不確定如何在路上訪問它。不過,也許我錯過了某種基本的東西。
p.s.這將最終在Heroku上運行,所以儘管我非常感謝任何見解,但在Heroku上工作的解決方案將是最有用的。
編輯:
這似乎是在做我想要的東西,當地至少:
class Dashboard < Sinatra::Base
configure do
Thread.start do
EM.run do
@@xmpp_stream = Blather::Client.setup('jid', 'password')
@@xmpp_stream.connect
end
end
end
end
你打算如何運行應用程序?如果你使用多個工人,你會得到每個工人的一個連接,這是一個問題嗎? – Schmurfy 2012-02-28 13:05:31
部署應用程序時,不要忘記使用Cedar堆棧,因爲EventMachine僅在該堆棧上受支持。 – 2012-05-10 10:34:52