Struct ntex::web::HttpServer [−][src]
pub struct HttpServer<F, I, S, B> where
F: Fn() -> I + Send + Clone + 'static,
I: IntoServiceFactory<S>,
S: ServiceFactory<Config = AppConfig, Request = Request>,
S::Error: ResponseError,
S::InitError: Debug,
<S::Service as Service>::Future: 'static,
S::Response: Into<Response<B>>,
B: MessageBody, { /* fields omitted */ }
Expand description
An HTTP Server.
Create new http server with application factory.
use ntex::web::{self, App, HttpResponse, HttpServer}; #[ntex::main] async fn main() -> std::io::Result<()> { HttpServer::new( || App::new() .service(web::resource("/").to(|| async { HttpResponse::Ok() }))) .bind("127.0.0.1:59090")? .run() .await }
Implementations
impl<F, I, S, B> HttpServer<F, I, S, B> where
F: Fn() -> I + Send + Clone + 'static,
I: IntoServiceFactory<S>,
S: ServiceFactory<Config = AppConfig, Request = Request>,
S::Error: ResponseError + 'static,
S::InitError: Debug,
S::Future: 'static,
S::Response: Into<Response<B>> + 'static,
<S::Service as Service>::Future: 'static,
B: MessageBody + 'static,
[src]
impl<F, I, S, B> HttpServer<F, I, S, B> where
F: Fn() -> I + Send + Clone + 'static,
I: IntoServiceFactory<S>,
S: ServiceFactory<Config = AppConfig, Request = Request>,
S::Error: ResponseError + 'static,
S::InitError: Debug,
S::Future: 'static,
S::Response: Into<Response<B>> + 'static,
<S::Service as Service>::Future: 'static,
B: MessageBody + 'static,
[src]pub fn workers(self, num: usize) -> Self
[src]
pub fn workers(self, num: usize) -> Self
[src]Set number of workers to start.
By default http server uses number of available logical cpu as threads count.
pub fn backlog(self, backlog: i32) -> Self
[src]
pub fn backlog(self, backlog: i32) -> Self
[src]Set the maximum number of pending connections.
This refers to the number of clients that can be waiting to be served. Exceeding this number results in the client getting an error when attempting to connect. It should only affect servers under significant load.
Generally set in the 64-2048 range. Default value is 2048.
This method should be called before bind()
method call.
pub fn maxconn(self, num: usize) -> Self
[src]
pub fn maxconn(self, num: usize) -> Self
[src]Sets the maximum per-worker number of concurrent connections.
All socket listeners will stop accepting connections when this limit is reached for each worker.
By default max connections is set to a 25k.
pub fn maxconnrate(self, num: usize) -> Self
[src]
pub fn maxconnrate(self, num: usize) -> Self
[src]Sets the maximum per-worker concurrent connection establish process.
All listeners will stop accepting connections when this limit is reached. It can be used to limit the global SSL CPU usage.
By default max connections is set to a 256.
pub fn keep_alive<T: Into<KeepAlive>>(self, val: T) -> Self
[src]
pub fn keep_alive<T: Into<KeepAlive>>(self, val: T) -> Self
[src]Set server keep-alive setting.
By default keep alive is set to a 5 seconds.
pub fn client_timeout(self, val: u16) -> Self
[src]
pub fn client_timeout(self, val: u16) -> Self
[src]Set server client timeout in seconds for first request.
Defines a timeout for reading client request header. If a client does not transmit the entire set headers within this time, the request is terminated with the 408 (Request Time-out) error.
To disable timeout set value to 0.
By default client timeout is set to 5 seconds.
pub fn disconnect_timeout(self, val: u16) -> Self
[src]
pub fn disconnect_timeout(self, val: u16) -> Self
[src]Set server connection disconnect timeout in seconds.
Defines a timeout for shutdown connection. If a shutdown procedure does not complete within this time, the request is dropped.
To disable timeout set value to 0.
By default client timeout is set to 5 seconds.
pub fn ssl_handshake_timeout(self, val: u16) -> Self
[src]
pub fn ssl_handshake_timeout(self, val: u16) -> Self
[src]Set server ssl handshake timeout in seconds.
Defines a timeout for connection ssl handshake negotiation. To disable timeout set value to 0.
By default handshake timeout is set to 5 seconds.
pub fn server_hostname<T: AsRef<str>>(self, val: T) -> Self
[src]
pub fn server_hostname<T: AsRef<str>>(self, val: T) -> Self
[src]Set server host name.
Host name is used by application router as a hostname for url generation. Check ConnectionInfo documentation for more information.
By default host name is set to a “localhost” value.
pub fn stop_runtime(self) -> Self
[src]
pub fn stop_runtime(self) -> Self
[src]Stop ntex runtime when server get dropped.
By default “stop runtime” is disabled.
pub fn disable_signals(self) -> Self
[src]
pub fn disable_signals(self) -> Self
[src]Disable signal handling.
By default signal handling is enabled.
pub fn shutdown_timeout(self, sec: u64) -> Self
[src]
pub fn shutdown_timeout(self, sec: u64) -> Self
[src]Timeout for graceful workers shutdown.
After receiving a stop signal, workers have this much time to finish serving requests. Workers still alive after the timeout are force dropped.
By default shutdown timeout sets to 30 seconds.
pub fn buffer_params(
self,
max_read_buf_size: u16,
max_write_buf_size: u16,
min_buf_size: u16
) -> Self
[src]
pub fn buffer_params(
self,
max_read_buf_size: u16,
max_write_buf_size: u16,
min_buf_size: u16
) -> Self
[src]Set read/write buffer params
By default read buffer is 8kb, write buffer is 8kb
pub fn listen(self, lst: TcpListener) -> Result<Self>
[src]
pub fn listen(self, lst: TcpListener) -> Result<Self>
[src]Use listener for accepting incoming connection requests
HttpServer does not change any configuration for TcpListener, it needs to be configured before passing it to listen() method.
pub fn listen_openssl(
self,
lst: TcpListener,
builder: SslAcceptorBuilder
) -> Result<Self>
[src]
pub fn listen_openssl(
self,
lst: TcpListener,
builder: SslAcceptorBuilder
) -> Result<Self>
[src]Use listener for accepting incoming tls connection requests
This method sets alpn protocols to “h2” and “http/1.1”
pub fn listen_rustls(
self,
lst: TcpListener,
config: RustlsServerConfig
) -> Result<Self>
[src]
pub fn listen_rustls(
self,
lst: TcpListener,
config: RustlsServerConfig
) -> Result<Self>
[src]Use listener for accepting incoming tls connection requests
This method sets alpn protocols to “h2” and “http/1.1”
pub fn bind<A: ToSocketAddrs>(self, addr: A) -> Result<Self>
[src]
pub fn bind<A: ToSocketAddrs>(self, addr: A) -> Result<Self>
[src]The socket address to bind
To bind multiple addresses this method can be called multiple times.
pub fn bind_openssl<A>(
self,
addr: A,
builder: SslAcceptorBuilder
) -> Result<Self> where
A: ToSocketAddrs,
[src]
pub fn bind_openssl<A>(
self,
addr: A,
builder: SslAcceptorBuilder
) -> Result<Self> where
A: ToSocketAddrs,
[src]Start listening for incoming tls connections.
This method sets alpn protocols to “h2” and “http/1.1”
pub fn bind_rustls<A: ToSocketAddrs>(
self,
addr: A,
config: RustlsServerConfig
) -> Result<Self>
[src]
pub fn bind_rustls<A: ToSocketAddrs>(
self,
addr: A,
config: RustlsServerConfig
) -> Result<Self>
[src]Start listening for incoming tls connections.
This method sets alpn protocols to “h2” and “http/1.1”
pub fn listen_uds(self, lst: UnixListener) -> Result<Self>
[src]
pub fn listen_uds(self, lst: UnixListener) -> Result<Self>
[src]Start listening for unix domain connections on existing listener.
This method is available with uds
feature.
impl<F, I, S, B> HttpServer<F, I, S, B> where
F: Fn() -> I + Send + Clone + 'static,
I: IntoServiceFactory<S>,
S: ServiceFactory<Config = AppConfig, Request = Request>,
S::Error: ResponseError,
S::InitError: Debug,
S::Response: Into<Response<B>>,
S::Service: 'static,
B: MessageBody,
[src]
impl<F, I, S, B> HttpServer<F, I, S, B> where
F: Fn() -> I + Send + Clone + 'static,
I: IntoServiceFactory<S>,
S: ServiceFactory<Config = AppConfig, Request = Request>,
S::Error: ResponseError,
S::InitError: Debug,
S::Response: Into<Response<B>>,
S::Service: 'static,
B: MessageBody,
[src]pub fn run(self) -> Serverⓘ
[src]
pub fn run(self) -> Serverⓘ
[src]Start listening for incoming connections.
This method starts number of http workers in separate threads.
For each address this method starts separate thread which does
accept()
in a loop.
This methods panics if no socket address can be bound or an ntex system is not yet configured.
use ntex::web::{self, App, HttpResponse, HttpServer}; #[ntex::main] async fn main() -> std::io::Result<()> { HttpServer::new( || App::new().service(web::resource("/").to(|| async { HttpResponse::Ok() })) ) .bind("127.0.0.1:0")? .run() .await }
Auto Trait Implementations
impl<F, I, S, B> !RefUnwindSafe for HttpServer<F, I, S, B>
impl<F, I, S, B> Send for HttpServer<F, I, S, B> where
B: Send,
S: Send,
B: Send,
S: Send,
impl<F, I, S, B> !Sync for HttpServer<F, I, S, B>
impl<F, I, S, B> Unpin for HttpServer<F, I, S, B> where
B: Unpin,
F: Unpin,
S: Unpin,
B: Unpin,
F: Unpin,
S: Unpin,
impl<F, I, S, B> !UnwindSafe for HttpServer<F, I, S, B>
Blanket Implementations
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]pub fn borrow_mut(&mut self) -> &mut T
[src]
pub fn borrow_mut(&mut self) -> &mut T
[src]Mutably borrows from an owned value. Read more
impl<T> Instrument for T
[src]
impl<T> Instrument for T
[src]fn instrument(self, span: Span) -> Instrumented<Self>
[src]
fn instrument(self, span: Span) -> Instrumented<Self>
[src]Instruments this type with the provided Span
, returning an
Instrumented
wrapper. Read more
fn in_current_span(self) -> Instrumented<Self>
[src]
fn in_current_span(self) -> Instrumented<Self>
[src]impl<T> Same<T> for T
impl<T> Same<T> for T
type Output = T
type Output = T
Should always be Self