NexusForce 1.0.0
A rigorously engineered full-stack C++ backend library.
载入中...
搜索中...
未找到
neforce::http::http_server类 参考

HTTP/HTTPS服务器类 更多...

#include <http_server.hpp>

struct  session_manager
 会话管理器 更多...

Public 类型

using socket_type = tcp_socket
 Socket类型

Public 成员函数

 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_managersni () noexcept
 获取SNI管理器
const sni_managersni () const noexcept
 获取SNI管理器常量引用
http_routerrouter () noexcept
 获取路由器引用
const http_routerrouter () const noexcept
 获取路由器常量引用
websocket_serverwebsocket () noexcept
 获取WebSocket服务器引用
const websocket_serverwebsocket () 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_storesession_store () noexcept
 获取会话存储后端
const http_cookie_namecookie_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_sessionget_session (http_request &request, bool create=false)
 获取会话(从请求中)
bool start (int backlog=SOMAXCONN)
 启动服务器
void stop () noexcept
 停止服务器
tcp_server_baseserver () noexcept
 获取底层服务器指针
const tcp_server_baseserver () const noexcept
 获取底层服务器常量指针

Public 属性

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升级等。

使用示例:

// HTTP服务器
// 设置路由
server.router().get("/", [](http_request& req, http_response& res) {
res.body = "<h1>Hello World</h1>";
});
server.router().get("/api/users", [](http_request& req, http_response& res) {
res.body = R"({"users": [{"id": 1, "name": "John"}]})";
res.set_content_type(http_content::JSON_APP());
});
// WebSocket路由
server.websocket().route("/ws", [](websocket_server::session_ptr session) {
session->set_message_handler([](const string& msg, websocket_opcode opcode) {
session->send("Echo: " + msg);
});
});
// 启动服务器
server.start();
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.hpp71 行定义.

构造及析构函数说明

◆ http_server() [1/2]

neforce::http::http_server::http_server ( ports port,
io_context & ioc,
size_t worker_count = 0 )
explicit

构造HTTP服务器

参数
port监听端口
ioc异步 I/O 执行上下文
worker_count工作线程数(0=CPU线程数)

引用了 port().

被这些函数引用 http_server().

◆ http_server() [2/2]

neforce::http::http_server::http_server ( ports port,
io_context & ioc,
ssl_context ctx,
size_t worker_count = 0 )

构造HTTPS服务器

参数
port监听端口
ioc异步 I/O 执行上下文
ctxSSL上下文(必须已加载证书)
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

添加SNI多域名证书

参数
hostname域名(如 "example.com")
ctx该域名的SSL上下文

允许同一端口为不同域名提供不同证书。 在TLS握手时根据客户端SNI自动选择对应证书。

在文件 http_server.hpp199 行定义.

引用了 add_sni_host() , 以及 neforce::move().

被这些函数引用 add_sni_host().

◆ cookie_name()

const http_cookie_name & neforce::http::http_server::cookie_name ( ) const
inlinenodiscardnoexcept

获取会话Cookie名称

返回
Cookie名称

在文件 http_server.hpp262 行定义.

◆ get_session()

http_session * neforce::http::http_server::get_session ( http_request & request,
bool create = false )
nodiscard

获取会话(从请求中)

参数
requestHTTP请求
create不存在时是否创建
返回
会话指针

◆ is_running()

bool neforce::http::http_server::is_running ( ) const
inlinenodiscardnoexcept

检查服务器是否运行中

返回
运行中返回true

在文件 http_server.hpp298 行定义.

◆ load_certificate()

bool neforce::http::http_server::load_certificate ( const string & cert_file,
const string & key_file )

加载SSL证书

参数
cert_file证书文件路径
key_file私钥文件路径
返回
加载成功返回true

引用了 load_certificate().

被这些函数引用 load_certificate().

◆ port()

ports neforce::http::http_server::port ( ) const
inlinenodiscardnoexcept

获取监听端口

返回
端口号

在文件 http_server.hpp292 行定义.

引用了 neforce::ports::port.

被这些函数引用 http_server() , 以及 http_server().

◆ router() [1/2]

const http_router & neforce::http::http_server::router ( ) const
inlinenodiscardnoexcept

获取路由器常量引用

返回
路由器常量引用

在文件 http_server.hpp223 行定义.

◆ router() [2/2]

http_router & neforce::http::http_server::router ( )
inlinenodiscardnoexcept

获取路由器引用

返回
路由器引用

在文件 http_server.hpp217 行定义.

◆ server() [1/2]

const tcp_server_base * neforce::http::http_server::server ( ) const
inlinenodiscardnoexcept

获取底层服务器常量指针

返回
服务器常量指针

在文件 http_server.hpp330 行定义.

◆ server() [2/2]

tcp_server_base * neforce::http::http_server::server ( )
inlinenodiscardnoexcept

获取底层服务器指针

返回
服务器指针

在文件 http_server.hpp324 行定义.

◆ session_store()

http::session_store * neforce::http::http_server::session_store ( )
inlinenodiscardnoexcept

获取会话存储后端

返回
存储后端指针,未设置返回nullptr

在文件 http_server.hpp256 行定义.

◆ set_cookie_name()

void neforce::http::http_server::set_cookie_name ( http_cookie_name name)
inlinenoexcept

设置会话Cookie名称

参数
nameCookie名称

在文件 http_server.hpp241 行定义.

引用了 neforce::move().

◆ set_max_sessions()

void neforce::http::http_server::set_max_sessions ( size_t max)
inlinenoexcept

设置最大会话数

参数
max最大数量

在文件 http_server.hpp274 行定义.

引用了 neforce::max().

◆ set_session_cleanup_interval()

void neforce::http::http_server::set_session_cleanup_interval ( seconds interval)
inlinenoexcept

设置会话清理间隔

参数
interval间隔时间

在文件 http_server.hpp268 行定义.

◆ set_session_store()

void neforce::http::http_server::set_session_store ( unique_ptr< session_store > store)
inlinenoexcept

设置自定义会话存储后端

参数
store会话存储实现

可传入 redis_session_store 等实现以实现分布式会话。 不设置则使用默认内存存储(session_manager内置)。

在文件 http_server.hpp250 行定义.

引用了 neforce::move().

◆ set_upgrade_handler()

void neforce::http::http_server::set_upgrade_handler ( string protocol,
function< bool(http_request &, tcp_socket *)> handler )
inline

注册协议升级处理器

参数
protocol协议名(如 "websocket", "h2c")
handler处理器函数,接收请求和socket,返回true表示已处理

服务器收到 Upgrade 请求时,按 Upgrade 头部值查找并调用对应处理器。 WebSocket 升级处理器已默认注册(当 enable_websocket 为 true 时)。

在文件 http_server.hpp284 行定义.

引用了 neforce::move().

◆ sni() [1/2]

const sni_manager & neforce::http::http_server::sni ( ) const
inlinenodiscardnoexcept

获取SNI管理器常量引用

返回
SNI管理器常量引用

在文件 http_server.hpp211 行定义.

◆ sni() [2/2]

sni_manager & neforce::http::http_server::sni ( )
inlinenodiscardnoexcept

获取SNI管理器

返回
SNI管理器引用

在文件 http_server.hpp205 行定义.

◆ start()

bool neforce::http::http_server::start ( int backlog = SOMAXCONN)
inline

启动服务器

参数
backlog连接队列大小
返回
启动成功返回true

在文件 http_server.hpp313 行定义.

◆ websocket() [1/2]

const websocket_server & neforce::http::http_server::websocket ( ) const
inlinenodiscardnoexcept

获取WebSocket服务器常量引用

返回
WebSocket服务器常量引用

在文件 http_server.hpp235 行定义.

◆ websocket() [2/2]

websocket_server & neforce::http::http_server::websocket ( )
inlinenodiscardnoexcept

获取WebSocket服务器引用

返回
WebSocket服务器引用

在文件 http_server.hpp229 行定义.


该类的文档由以下文件生成: