EventMachine を使用して WebSocket でサーバーに接続するバックグラウンド スクリプトの作成に取り組んでいます。スクリプトは、DelayedJob または Resque を使用して実行されます。WebSockets サーバーと通信してメッセージを送信することはできましたが、EventMachine ループ内でエラーが発生するたびに、スクリプトがクラッシュすることはありません。 . WebSocketメッセージを送信するだけで受信しないため、EventMachineを使用する必要はありません-しかし、これについて何か助けていただければ幸いです:)ありがとう!
#!/usr/bin/env ruby
require 'rubygems'
require 'eventmachine'
require 'em-http'
class Job
include EventMachine::Deferrable
def self.perform
job = Job.new
EventMachine.run {
http = EventMachine::HttpRequest.new("ws://localhost:8080/").get :timeout => 0
http.errback { puts "oops" }
http.callback {
puts "WebSocket connected!"
http.send("Hello watcher")
}
http.stream { |msg| }
job.callback { puts "done" }
Thread.new {
job.execute(http)
http.close
EventMachine.stop
}
}
end
def execute(h)
sleep 1
puts "Job Runner!"
h.send("welcome!")
sleep 2
asdsadsa # here I am trying to simulate an error
sleep 1
h.send("we are all done!")
sleep 1
set_deferred_status :succeeded
end
end
Job.perform