HTTP/HTTPS服务器类
更多...
#include <http_server.hpp>
|
| | http_server (ports port, io_context &ioc, size_t worker_count=0) |
| | 构造HTTP服务器
|
| | http_server (ports port, io_context &ioc, ssl_context ctx, size_t worker_count=0) |
| | 构造HTTPS服务器
|
| bool | load_certificate (const string &cert_file, const string &key_file) |
| | 加载SSL证书
|
| void | add_sni_host (const string &hostname, ssl_context ctx) |
| | 添加SNI多域名证书
|
| sni_manager & | sni () noexcept |
| | 获取SNI管理器
|
| const sni_manager & | sni () const noexcept |
| | 获取SNI管理器常量引用
|
| http_router & | router () noexcept |
| | 获取路由器引用
|
| const http_router & | router () const noexcept |
| | 获取路由器常量引用
|
| websocket_server & | websocket () noexcept |
| | 获取WebSocket服务器引用
|
| const websocket_server & | websocket () const noexcept |
| | 获取WebSocket服务器常量引用
|
| void | set_cookie_name (http_cookie_name name) noexcept |
| | 设置会话Cookie名称
|
| void | set_session_store (unique_ptr< session_store > store) noexcept |
| | 设置自定义会话存储后端
|
| http::session_store * | session_store () noexcept |
| | 获取会话存储后端
|
| const http_cookie_name & | cookie_name () const noexcept |
| | 获取会话Cookie名称
|
| void | set_session_cleanup_interval (seconds interval) noexcept |
| | 设置会话清理间隔
|
| void | set_max_sessions (size_t max) noexcept |
| | 设置最大会话数
|
| void | set_upgrade_handler (string protocol, function< bool(http_request &, tcp_socket *)> handler) |
| | 注册协议升级处理器
|
| ports | port () const noexcept |
| | 获取监听端口
|
| bool | is_running () const noexcept |
| | 检查服务器是否运行中
|
| http_session * | get_session (http_request &request, bool create=false) |
| | 获取会话(从请求中)
|
| bool | start (int backlog=SOMAXCONN) |
| | 启动服务器
|
|
void | stop () noexcept |
| | 停止服务器
|
| tcp_server_base * | server () noexcept |
| | 获取底层服务器指针
|
| const tcp_server_base * | server () const noexcept |
| | 获取底层服务器常量指针
|
|
|
byte_size | max_server_header_size {16_KB} |
| | 最大请求头大小
|
|
byte_size | max_server_body_size {100_MB} |
| | 最大请求体大小
|
|
bool | enable_websocket {true} |
| | 是否启用WebSocket
|
|
bool | enable_connect {true} |
| | 是否启用CONNECT隧道
|
|
size_t | max_connections_per_ip {0} |
| | 每IP最大连接数(0=不限制)
|
|
size_t | max_header_count {100} |
| | 最大请求头数量
|
|
size_t | max_h2c_upgrades {32} |
| | 最大h2c升级连接数
|
|
milliseconds | body_read_timeout {30000} |
| | 请求体读取超时(毫秒)
|
HTTP/HTTPS服务器类
提供完整的HTTP/HTTPS服务器功能,包括请求解析、路由分发、 会话管理、WebSocket升级等。
使用示例:
res.
body =
"<h1>Hello World</h1>";
});
res.body = R"({"users": [{"id": 1, "name": "John"}]})";
});
session->send("Echo: " + msg);
});
});
tcp_server_base * server() noexcept
获取底层服务器指针
http_server(ports port, io_context &ioc, size_t worker_count=0)
构造HTTP服务器
shared_ptr< websocket_session > session_ptr
会话智能指针类型
http_server_response http_response
HTTP响应类型别名
http_server_request http_request
HTTP请求类型别名
websocket_opcode
WebSocket帧操作码
static const http_content & JSON_APP()
application/json
static const http_content & HTML_TEXT()
text/html
void set_content_type(http_content value)
设置Content-Type
在文件 http_server.hpp 第 71 行定义.
◆ http_server() [1/2]
构造HTTP服务器
- 参数
-
| port | 监听端口 |
| ioc | 异步 I/O 执行上下文 |
| worker_count | 工作线程数(0=CPU线程数) |
引用了 port().
被这些函数引用 http_server().
◆ http_server() [2/2]
构造HTTPS服务器
- 参数
-
| port | 监听端口 |
| ioc | 异步 I/O 执行上下文 |
| ctx | SSL上下文(必须已加载证书) |
| worker_count | 工作线程数(0=CPU线程数) |
引用了 http_server() , 以及 port().
◆ add_sni_host()
| void neforce::http::http_server::add_sni_host |
( |
const string & | hostname, |
|
|
ssl_context | ctx ) |
|
inline |
◆ cookie_name()
◆ get_session()
获取会话(从请求中)
- 参数
-
| request | HTTP请求 |
| create | 不存在时是否创建 |
- 返回
- 会话指针
◆ is_running()
| bool neforce::http::http_server::is_running |
( |
| ) |
const |
|
inlinenodiscardnoexcept |
◆ load_certificate()
| bool neforce::http::http_server::load_certificate |
( |
const string & | cert_file, |
|
|
const string & | key_file ) |
◆ port()
| ports neforce::http::http_server::port |
( |
| ) |
const |
|
inlinenodiscardnoexcept |
◆ router() [1/2]
| const http_router & neforce::http::http_server::router |
( |
| ) |
const |
|
inlinenodiscardnoexcept |
◆ router() [2/2]
◆ server() [1/2]
◆ server() [2/2]
◆ session_store()
◆ set_cookie_name()
◆ set_max_sessions()
| void neforce::http::http_server::set_max_sessions |
( |
size_t | max | ) |
|
|
inlinenoexcept |
◆ set_session_cleanup_interval()
| void neforce::http::http_server::set_session_cleanup_interval |
( |
seconds | interval | ) |
|
|
inlinenoexcept |
◆ set_session_store()
◆ set_upgrade_handler()
注册协议升级处理器
- 参数
-
| protocol | 协议名(如 "websocket", "h2c") |
| handler | 处理器函数,接收请求和socket,返回true表示已处理 |
服务器收到 Upgrade 请求时,按 Upgrade 头部值查找并调用对应处理器。 WebSocket 升级处理器已默认注册(当 enable_websocket 为 true 时)。
在文件 http_server.hpp 第 284 行定义.
引用了 neforce::move().
◆ sni() [1/2]
| const sni_manager & neforce::http::http_server::sni |
( |
| ) |
const |
|
inlinenodiscardnoexcept |
◆ sni() [2/2]
◆ start()
| bool neforce::http::http_server::start |
( |
int | backlog = SOMAXCONN | ) |
|
|
inline |
◆ websocket() [1/2]
◆ websocket() [2/2]
该类的文档由以下文件生成: