Когда я запускаю свое приложение, я хочу, чтобы ActionCable передавала запись на сервер с постоянным соединением.
С этим соединением я хочу взаимодействовать - отправлять действия и читать полученные сообщения по требованию.
Поскольку я до сих пор почти не имел дело с EventMachine и ничего не нашел в Интернете о своей проблеме, вот мой вопрос.
Я опишу свою проблему / решение с помощью смеси реального рубина и псевдокода ruby..
require 'action_cable_client'
my_thread = Thread.new do
EventMachine.run do
@@message_storage = []
uri = "ws://127.0.0.1:3000/cable"
client = ActionCableClient.new(uri, 'LoggingChannel')
client.connected do
puts 'successfully connected.'
end
client.disconnected do
puts 'disconnected.'
end
client.received do |message|
puts "Got a message: #{message}"
@@message_storage += [message]
end
end
end
# here is my main app loop
some_actions()
if error
my_thread.client.perform('error', {message: 'error 123 occured'})
end
if warning
my_thread.client.perform('info', {message: 'some information for you'})
end
puts "Currently there are #{my_thread.@@message_storage.size} messages in storage"
Есть ли решение?
Дополнительная информация, мое намерение:
Я не понял (так что есть толькопсевдокод для него, который логически выглядит нормально)
- как я могу взаимодействовать с ActionCable внутри EventMachine для выполнения в нем задачи извне
- как я могу получить доступ к значению внутриEventMachine / ActionCable извне