私はEventMachineの初心者ですから、私はこれに完全に間違っている可能性があります。私がしようとしているのは、EM接続(実際にはBlatherストリームですが、それはEM :: Connection)を作成することです。アプリケーションが起動すると、いつでも必要なときにいつでも起動できます。今、このSinatraアプリケーションでBlatherが正しく動作する唯一の方法は、毎回新しい接続を作成し、EM.runブロック内にラップすることです。Sinatraアプリケーションで永続的なEM接続を1つ維持する
私は、async_sinatraが役立つかどうかを判断しようとしています。しかし、リクエストが非同期的に発生した場合、私は実際に気にしません。私はそれがいいと思うが、私は依頼間のつながりをどのように維持するか見ていない。
私の頭脳の中で最も意味があると思われる解決策は、Sinatra configureブロック内の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
アプリケーションをどのように実行しますか?複数の従業員を使用する場合は、各従業員ごとに1つの接続が得られますが、それは問題ですか? – Schmurfy
アプリケーションをデプロイするときは、Cedarスタックを使用することを忘れないでください。そのため、EventMachineはそのスタックでのみサポートされています。 –