バックグラウンド プロセスで Ruby を使用して WebSocket にデータを送信するにはどうすればよいですか?
バックグラウンド
gemを使用して Websocket サーバーを実行する別の ruby ファイルが既にありますwebsocket-eventmachine-server
。ただし、Rails アプリケーション内で、バックグラウンド タスクで websocket にデータを送信したいと考えています。
これが私のWebSocketサーバーです:
EM.run do
trap('TERM') { stop }
trap('INT') { stop }
WebSocket::EventMachine::Server.start(host: options[:host], port: options[:port]) do |ws|
ws.onopen do
puts 'Client connected'
end
ws.onmessage do |msg, type|
ws.send msg, type: type
end
ws.onclose do
puts 'Client disconnected'
end
end
def stop
puts 'Terminating WebSocket Server'
EventMachine.stop
end
end
ただし、バックグラウンド プロセス (Sidekiq を使用しています) では、WebSocket に接続してデータを送信する方法がわかりません。
これが私の Sidekiq ワーカーです。
class MyWorker
include Sidekiq::Worker
def perform(command)
100.times do |i|
# Send 'I am on #{i}' to the Websocket
end
end
end
私は何かができることを望んでいましたがEventMachine::WebSocket.send 'My message!'
、そのための API や同様のものは見当たりません。RubyでWebSocketにデータを送信する正しい方法は何ですか?