Class: ESM::Websocket::Server
- Inherits:
-
Object
- Object
- ESM::Websocket::Server
- Defined in:
- lib/esm/websocket/server.rb
Class Method Summary collapse
Class Method Details
.call(env) ⇒ Object
21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/esm/websocket/server.rb', line 21 def self.call(env) return if !Faye::WebSocket.websocket?(env) # Create a new websocket client ws = Faye::WebSocket.new(env) # To avoid over loading everything @overseer.add_to_lobby(ws) # Return async Rack response ws.rack_response end |
.log(*args) ⇒ Object
34 35 36 |
# File 'lib/esm/websocket/server.rb', line 34 def self.log(*args) ESM.logger.info("#{self.class}##{__method__}") { "Websocket server is running on #{args.first}" } end |
.run ⇒ Object
6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
# File 'lib/esm/websocket/server.rb', line 6 def self.run # Load Faye support for puma Faye::WebSocket.load_adapter("puma") port = ESM.config.ports.websocket @server = Puma::Server.new(self) @server.add_tcp_listener("0.0.0.0", port) @server.run info!("Starting server") @overseer = ESM::Websocket::Connection::Overseer.new end |
.stop ⇒ Object
38 39 40 41 42 43 44 45 |
# File 'lib/esm/websocket/server.rb', line 38 def self.stop # Trigger a fake on_close event to notify communities that the connection lost is because ESM is rebooting. # EventMachine will cause a Ruby SegFault if all connections are closed in a loop. ESM::Websocket.connections.each { |_server_id, connection| connection.send(:on_close, nil) } ESM::Websocket::Request::Overseer.die @server&.stop end |