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 = 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?Boolean

Returns:

  • (Boolean)


28
29
30
# File 'lib/grenache/websocket.rb', line 28

def connected?
  !! @ws
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