Websocket のエミッターまたはサーバーとしての Action Cable (Rails 5 機能) に精通しています。ただし、WebSocket 経由でデータを送信する API を使用することになっています (例: 'socket.provider.com?token=12345')。
socket.io-client-simple ( https://github.com/shokai/ruby-socket.io-client-simple ) を使用してプレーンな Ruby ファイルでいくつかのテストを行いましたが、これがどのように機能するかはわかりませんデプロイされた Rails アプリで動作します。API プロバイダーによって発行されたイベントを常にリッスンする別のプロセスが必要だと思います。誰かが似たようなことをしましたか?デプロイには Heroku を使用します。
注: イベントからのデータの一部を受信して永続化する必要があるため、websocket を受信して Rails アプリ (つまり、Javascript Socket.IO ライブラリ) に投稿するためにクライアント側のアプローチを使用することはオプションではないと思います。リアルタイムで、少なくとも 1 つのクライアントの接続性に依存しません。
また、何らかの方法で Action Cable を「イベントのリスナー」として機能するように自動的に設定する方法があるかどうかも疑問に思っています。これまでのところ、そのトピックについては何も読んでいませんが、その方向性に関するいくつかの提案を見たいと思っています.
更新: プロバイダーの websockets API に接続するためにこれまでに使用した Ruby コードは次のとおりです。
require 'rubygems'
require 'socket.io-client-simple'
socket = SocketIO::Client::Simple.connect 'https://api.provider.com', token: '12345'
socket.on :connect do
puts "connect!!!"
end
socket.on :disconnect do
puts "disconnected!!"
end
socket.on :providerevent do |data|
puts data
end
socket.on :error do |err|
p err
end
puts "please input and press Enter key"
loop do
sleep 100
end