Технологии

Программирование / websocket / ruby - вопрос №2743405

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

require 'faye/websocket'
require 'eventmachine'

data = []

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

январь 23, 2018 г.

  • Всего ответов: 0