Class: Grenache::WebsocketServer

Inherits:
Object
  • Object
show all
Defined in:
lib/grenache/websocket.rb

Instance Method Summary collapse

Constructor Details

#initialize(port, &block) ⇒ WebsocketServer

Returns a new instance of WebsocketServer.



5
6
7
8
# File 'lib/grenache/websocket.rb', line 5

def initialize(port, &block)
  @port = port
  @callback = block
end

Instance Method Details

#app(env) ⇒ Object



14
15
16
17
18
19
20
21
22
# File 'lib/grenache/websocket.rb', line 14

def app(env)
  ws = Faye::WebSocket.new(env)
  ws.on :message, -> (ev) do
    req = Message.parse(ev.data)
    res = @callback.call(req)
    ws.send(Message.response_to(req, res).to_json)
  end
  ws.rack_response
end

#send(payload) ⇒ Object



24
25
26
# File 'lib/grenache/websocket.rb', line 24

def send(payload)
  @server.send(payload)
end

#start_serverObject



10
11
12
# File 'lib/grenache/websocket.rb', line 10

def start_server
  @server = Thin::Server.start('0.0.0.0', @port, method(:app), {signals: false})
end