class

Earl::SockServer

Inherits Earl::Supervisor < Earl::Logger < Earl::Agent < Reference < Object

A stream socket server.

  • Binds to / listens on many interfaces and ports.
  • Servers are spawned in a dedicated Fiber then supervised.
  • Incoming connections are handled in their own Fiber that runs #call(client) and are eventually closed when the method returns or raised.

Instance methods

add_listener(uri : String) : Nil

Adds a server based on an URI definition. For example:

server.add_listener("unix:///tmp/earl.sock")
server.add_listener("tcp://[::]:9292")
server.add_listener("ssl://10.0.3.1:443/?cert=ssl/server.crt&key=ssl/server.key")
add_listener(uri : URI) : Nil
add_ssl_listener(host : String, port : Int32, ssl_context : OpenSSL::SSL::Context::Server, *, backlog = ::Socket::SOMAXCONN) : Nil

Adds a TCP server with transparent SSL handling.

add_tcp_listener(host : String, port : Int32, *, backlog = ::Socket::SOMAXCONN) : Nil

Adds a TCP server.

add_unix_listener(path : String, *, mode = nil, backlog = ::Socket::SOMAXCONN) : Nil

Adds an UNIX server.

call(client : Socket)

Called in a dedicated Fiber when a server receives a connection. Connections are closed when the method returns or raised.

started?