class Grenache::WebsocketClient

Public Class Methods

new(uri, &cb) click to toggle source
# File lib/grenache/websocket.rb, line 34
def initialize(uri, &cb)
  @uri = uri.sub("tcp://","ws://")
  @uri.prepend("ws://") unless @uri.start_with?("ws://")
  @callback = cb
end

Public Instance Methods

connected?() click to toggle source
# File lib/grenache/websocket.rb, line 45
def connected?
  @connected
end
send(payload) click to toggle source
# File lib/grenache/websocket.rb, line 40
def send payload
  ws_connect unless @connected
  @ws.send(payload)
end

Private Instance Methods

disconnect() click to toggle source
# File lib/grenache/websocket.rb, line 67
def disconnect
  @ws.close
  @ws = nil
end
on_close(ev) click to toggle source
# File lib/grenache/websocket.rb, line 72
def on_close(ev)
  @connected = false
end
on_message(ev) click to toggle source
# File lib/grenache/websocket.rb, line 61
def on_message(ev)
  msg = ServiceMessage.parse(ev.data)
  err = msg.err.kind_of?(Exception) ? msg.err.message : msg.err
  @callback.call(msg.err, msg.payload) if @callback
end
on_open(ev) click to toggle source
# File lib/grenache/websocket.rb, line 57
def on_open(ev)
  @connected = true
end
ws_connect() click to toggle source
# File lib/grenache/websocket.rb, line 50
def ws_connect
  @ws = Faye::WebSocket::Client.new(@uri)
  @ws.on(:open, method(:on_open))
  @ws.on(:message, method(:on_message))
  @ws.on(:close, method(:on_close))
end