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

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

Войти через TM ID
Похожие вопросы
Teachbase Москва
от 100 000 руб.
Wheely Москва
До 220 000 руб.
22 июля 2018, в 20:41
10000 руб./за проект
22 июля 2018, в 20:13
2000 руб./за проект