我現在熟悉Action Cable(Rails 5功能)作爲websockets的發射器或服務器。不過,我應該使用一個通過websockets發送數據的API(例如'socket.provider.com?token=12345')。Rails 5應用程序(動作電纜)作爲Socket.io服務器和客戶端
我使用socket.io-client-simple(https://github.com/shokai/ruby-socket.io-client-simple)對一個普通的Ruby文件進行了一些測試,它可以工作,但我不確定這將如何在部署的Rails應用程序上工作。我猜我需要一個獨立的進程,不斷監聽API提供者發出的事件。有沒有人做過類似的事情?我將使用Heroku進行部署。
注意:我認爲使用客戶端方法接收websockets並將它們發佈到我的Rails應用程序(即Javascript Socket.IO庫)不是一種選擇,因爲我需要接收AND並保留一些數據來自事件的實時而不依賴於至少一個客戶端的連接。
我還想知道是否有任何方法可以自動設置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
嗨Graham,謝謝你的鏈接。我知道如何在生產中使用ActionCable。我的問題是如何從我的Rails應用程序主動偵聽來自外部提供程序的套接字事件**。這意味着,我的應用程序不僅會發出從我的應用程序本身生成的事件,還會接收由外部API生成的事件。 –
外部api是否向您的應用中的端點發送請求/事件? –
不,我必須通過連接到它們的端點來監聽它們(例如,通過Socket.IO連接到'socket.provider.com?token=12345')。這在我寫的測試普通Ruby程序中工作,正如我在我的問題中所述,但我想要的是知道如何使活動後臺進程始終連接到此提供程序的Websockets API。 –