Задать вопрос
@ap4nova

Ruby. Как настроить соединение с сайтом через протокол websocket?

Есть программа, которая соединяется с сервером и получает от него некие данные + сигнализирует каждые 15 или 60 секунд.

require 'faye/websocket'
require 'eventmachine'

data = []
count = 0

EM.run {
ws = Faye::WebSocket::Client.new('wss://olymptrade.com/ws2')


ws.on :open do |event|
p [:open]
ws.send('{"uuid":"JCBQ7XBRMYSL0JB4N5","pair":"Bitcoin","size":60}')
end

ws.on :message do |event|
p [:message, event.data]
    data << event.data
    data_servertime = data[0].gsub(/[^\d]/, '').to_i
    data.delete_at(0)

    if ((data_servertime % 15) == 0)
        puts "Прошло 15 секунд"
    elsif ((data_servertime % 60) == 0)
        puts "Прошло 60 секунд"
    end
end

ws.on :close do |event|
p [:close, event.code, event.reason]

ws = nil
end

}


При запуске она постоянно выводит в консоль получаемые данные:

[:message, "{\"pair\":\"Bitcoin\",\"time\":1516567298,\"open\":11146.938,\"low\":11146.938,\"high\":11146.938,\"close\":11146.938}"]

[:message, "{\"servertime\":1516567298}"]


Вопросы:
  1. Как мне поместить в массив остальные данные (кроме servertime) т.е. pair,time,open,low,high,close
  2. Как сделать так, чтоб на экран постоянно не выводилась вся эта информация, а выводилось только то что вывожу я при помощи puts
  • Вопрос задан
  • 260 просмотров
Подписаться 2 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Python-разработчик
    10 месяцев
    Далее
  • Skillfactory
    DevOps-инженер
    6 месяцев
    Далее
  • Хекслет
    Фронтенд-разработчик
    10 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
Dem1
@Dem1
Ruby on Rails developer
1) Распарсите данные и доставайте из хэша
require 'json'

parsed_data = JSON.parse(event.data)
parsed_data['pair']
parsed_data['open']


2) Данные постоянно выводятся, потому что Вы их сам выводите вот тут:
p [:message, event.data]
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
ITK academy Воронеж
от 50 000 до 90 000 ₽
ITK academy Нижний Новгород
от 80 000 до 120 000 ₽