Class: Up::UWebSocket::Server
- Inherits:
-
Object
- Object
- Up::UWebSocket::Server
- Defined in:
- lib/up/u_web_socket/server.rb
Direct Known Subclasses
Instance Method Summary collapse
-
#initialize(app:, host: 'localhost', port: 3000, scheme: 'http', ca_file: nil, cert_file: nil, key_file: nil) ⇒ Server
constructor
A new instance of Server.
- #listen ⇒ Object
- #stop ⇒ Object
Constructor Details
#initialize(app:, host: 'localhost', port: 3000, scheme: 'http', ca_file: nil, cert_file: nil, key_file: nil) ⇒ Server
Returns a new instance of Server.
13 14 15 16 17 18 19 20 21 22 23 24 |
# File 'lib/up/u_web_socket/server.rb', line 13 def initialize(app:, host: 'localhost', port: 3000, scheme: 'http', ca_file: nil, cert_file: nil, key_file: nil) @app = app @scheme = scheme || 'http' raise "unsupported scheme #{@scheme}" unless %w[http https].include?(@scheme) @host = host || 'localhost' @port = port&.to_i || 3000 @config = { handler: self.class.name, engine: "node/#{`process.version`}", port: port, scheme: scheme, host: host }.freeze @ca_file = ca_file @cert_file = cert_file @key_file = key_file @server = nil end |
Instance Method Details
#listen ⇒ Object
53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
# File 'lib/up/u_web_socket/server.rb', line 53 def listen raise "already running" if @server %x{ const ouwr = Opal.Up.UWebSocket.RackEnv; const ouws = Opal.Up.UWebSocket.Server; if (#@scheme == 'https') { #@server = uws.SSLApp({ ca_file_name: #@ca_file, cert_file_name: #@cert_file, key_file_name: #@key_file }); } else { #@server = uws.App(); } #@server.any('/*', (res, req) => { const rack_res = #@app.$call(ouwr.$new(req, #@config)); res.writeStatus(`${rack_res[0].toString()} OK`); ouws.handle_headers(rack_res[1], res); ouws.handle_response(rack_res[2], res); res.end(); }); #@server.listen(#@port, #@host, () => { console.log(`Server is running on ${#@scheme}://${#@host}:${#@port}`)}); } end |
#stop ⇒ Object
74 75 76 77 78 79 |
# File 'lib/up/u_web_socket/server.rb', line 74 def stop if Up::CLI::stoppable? `#@server.close()` @server = nil end end |