@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
  • Вопрос задан
  • 258 просмотров
Пригласить эксперта
Ответы на вопрос 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]
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы