Используйте подключение ActionCableClient для регистрации и получения данных вместе с основным приложением - PullRequest
0 голосов
/ 19 марта 2019

Когда я запускаю свое приложение, я хочу, чтобы 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 извне
...