class Grenache::WebsocketServer

Public Class Methods

new(port, &block) click to toggle source
# File lib/grenache/websocket.rb, line 5
def initialize(port, &block)
  @port = port
  @callback = block
end

Public Instance Methods

app(env) click to toggle source
# File lib/grenache/websocket.rb, line 14
def app(env)
  ws = Faye::WebSocket.new(env)
  ws.on :message, -> (ev) do
    req = ServiceMessage.parse(ev.data)
    err, payload = @callback.call(req)
    ws.send(ServiceMessage.new(payload, err, req.rid).to_json)
  end
  ws.rack_response
end
connected?() click to toggle source
# File lib/grenache/websocket.rb, line 28
def connected?
  !! @ws
end
send(payload) click to toggle source
# File lib/grenache/websocket.rb, line 24
def send(payload)
  @server.send(payload)
end
start_server() click to toggle source
# File lib/grenache/websocket.rb, line 10
def start_server
  @server = Thin::Server.start('0.0.0.0', @port, method(:app), {signals: false})
end