Module: SE::Realtime

Defined in:
lib/se/realtime.rb,
lib/se/realtime/version.rb,
lib/se/realtime/websocket.rb

Defined Under Namespace

Classes: WSClient

Constant Summary collapse

VERSION =
"0.0.1".freeze

Class Method Summary collapse

Class Method Details

.batch(size, **opts, &handler) ⇒ Object



21
22
23
24
25
26
27
28
29
30
# File 'lib/se/realtime.rb', line 21

def batch(size, **opts, &handler)
  posts = []
  json(**opts) do |e|
    posts << e
    if posts.length >= size
      handler.call(posts)
      posts = []
    end
  end
end

.json(site: nil, &handler) ⇒ Object



14
15
16
17
18
19
# File 'lib/se/realtime.rb', line 14

def json(site: nil, &handler)
  ws do |e|
    data = clean_keys(JSON.parse(e['data']))
    handler.call(data) if data[:site] == site || site.nil?
  end
end

.on_post(&handler) ⇒ Object



7
8
9
10
11
12
# File 'lib/se/realtime.rb', line 7

def on_post(&handler)
  ws do |e|
    data = JSON.parse e['data']
    handler.call(data)
  end
end

.ws(&block) ⇒ Object



32
33
34
# File 'lib/se/realtime.rb', line 32

def ws(&block)
  WSClient.new("https://qa.sockets.stackexchange.com", cookies, &block)
end