私は、WebsocketのエミッタまたはサーバとしてAction Cable(Rails 5の機能)に精通しています。しかし、私はウェブソケット(例えば、 'socket.provider.com?token = 12345')を介してデータを送信するAPIを消費することになっています。Rails 5 app(Action Cable)Socket.ioサーバーとクライアントとして
私はsocket.io-client-simple(https://github.com/shokai/ruby-socket.io-client-simple)を使用して単純なRubyファイルでいくつかのテストを行いましたが、うまくいきましたが、これはデプロイされたRailsアプリケーションでどのように動作するかわかりません。私は、APIプロバイダが発行するイベントを常にリスンする別のプロセスが必要であると推測しています。誰かが似たようなことをやったのですか私は展開のためにHerokuを使用するつもりです。
注:ウェブサポートを受け取ってから私のRailsアプリケーション(つまりJavascript Socket.IOライブラリ)にポストするクライアント側のアプローチを使用すると、オプションを受け取ることができないイベントからリアルタイムで到来し、少なくとも1つのクライアントの接続性に依存しない。
「イベントのリスナー」として機能するようにアクションケーブルを自動的に設定する方法があるかどうかは疑問です。これまでの話題は何も読んでいないが、その方向性に関する提案を見たい。
更新:
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
こんにちはグラハム、リンクありがとう。私はプロダクションでActionCableを使う方法を知っています。私の質問は、Railsアプリケーションから外部プロバイダ**からソケットイベント**を積極的にリッスンする方法でした。これは、自分のアプリケーションが自分のアプリケーションから生成されたイベントを生成するだけでなく、外部APIによって生成されたイベントも受け取ることを意味します。 –
外部のAPIがリクエスト/イベントをアプリケーションのエンドポイントに送信していますか? –
いいえ、私は彼らのエンドポイントに接続することによってそれらを聞く必要があります(例えば、socket.provider.com?token = 12345にSocket.IO経由で接続するなど)。これは私の質問で述べたように、私が書いたテスト用のRubyプログラムで動作しますが、私が望むのは、アクティブなバックグラウンドプロセスを常にこのプロバイダのWebsocket APIに接続する方法を知ることです。 –