我现在熟悉 Action Cable(Rails 5 功能)作为 websocket 的发射器或服务器。但是,我应该使用一个通过 websockets 发送数据的 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 库)不是一种选择,因为我需要接收并保留来自事件的一些数据实时而不依赖于至少一个客户端的连接。
我还想知道是否有任何方法可以自动将 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