|
ngl_server 1.0
基于 Actor 模型的 C++ 服务器框架
|
WebSocket传输门面类。 More...
#include <nws.h>
Public Member Functions | |
| bpool & | pool () |
| 获取共享的出站pack池。 | |
| bool | init (i16_port aport, i32_threadsize asocketthreadnum, bool aouternet, bool ause_tls=false, const ws_tls_options &atls_options={}) |
| 初始化WebSocket服务端/客户端服务。 | |
| bool | init (const net_listen_endpoint &alisten, i32_threadsize asocketthreadnum, bool aouternet, bool ause_tls=false, const ws_tls_options &atls_options={}) |
| i16_port | port () |
| 获取绑定的监听端口。 | |
| void | close (i32_sessionid asession) |
| 关闭会话并通知actor级连接处理器。 | |
| void | close_net (i32_sessionid asession) |
| 关闭会话但不触发actor级通知。 | |
| void | set_close (int asession, const std::string &aip, i16_port aport, const std::function< void(i32_sessionid)> &afun) |
| 为会话注册自动重连行为。 | |
| const std::string & | ip (const net_works &anets) |
| 选择合适的IP地址。 | |
| bool | connect (const std::string &aip, i16_port aport, const std::function< void(i32_sessionid)> &afun) |
| 发起异步WebSocket连接请求。 | |
| bool | connect (const std::string &aip, i16_port aport, const std::function< void(i32_sessionid)> &afun, bool await, bool areconnection) |
| 发起异步WebSocket连接请求(带阻塞等待和重连选项)。 | |
| bool | connect (i32_serverid aserverid, const std::function< void(i32_session)> &afun, bool await, bool areconnection) |
| 连接到已配置的服务器。 | |
| bool | send_msg (i32_sessionid asession, const std::string &amsg) |
| 通过WebSocket发送原始文本消息。 | |
| bool | send_pack (i32_sessionid asession, std::shared_ptr< pack > &lpack) |
| 发送一个已构建的类型化数据包。 | |
| bool | send_pack (i32_sessionid asession, std::shared_ptr< void > &lpack) |
| 发送类型擦除的数据包。 | |
| bool | send_server (i32_serverid aserverid, std::shared_ptr< pack > &apack) |
| 向指定服务器发送数据包。 | |
| template<typename Y, typename T = Y> | |
| bool | send (i32_sessionid asession, const Y &adata, i64_actorid aactorid, i64_actorid arequestactorid) |
| 序列化并发送类型化载荷到单个会话。 | |
| template<typename Y, typename T = Y> | |
| bool | send (const std::map< i32_sessionid, i64_actorid > &asession, const Y &adata, i64_actorid aactorid) |
| 向多个会话广播类型化载荷。 | |
| template<typename Y, typename T = Y> | |
| bool | send (const std::set< i32_sessionid > &asession, const Y &adata, i64_actorid aactorid, i64_actorid arequestactorid) |
| 向多个会话广播类型化载荷(带请求Actor ID)。 | |
| template<typename Y, typename T = Y> | |
| bool | send_server (i32_serverid aserverid, const Y &adata, i64_actorid aactorid, i64_actorid arequestactorid) |
| 先解析服务器会话,再序列化并发送载荷。 | |
| template<typename Y, typename T = Y> | |
| bool | send_server (const std::set< i32_serverid > &aserverids, const Y &adata, i64_actorid aactorid, i64_actorid arequestactorid) |
| 向多个服务器广播类型化载荷。 | |
| bool | send (const std::map< i32_sessionid, i64_actorid > &asession, i64_actorid aactorid, std::shared_ptr< pack > &apack) |
| 将已构建的pack广播到多个会话。 | |
| bool | send (const std::set< i32_sessionid > &asession, i64_actorid aactorid, i64_actorid arequestactorid, std::shared_ptr< pack > &apack) |
| 将已构建的pack广播到多个会话(带请求Actor ID)。 | |
| template<typename T> | |
| bool | send_client (i32_actordataid auid, i16_area aarea, i32_gatewayid agateway, T &adata) |
| 发送forward_g2c包装器到单个网关。 | |
| template<typename T> | |
| bool | send_client (const std::vector< std::pair< i32_actordataid, i16_area > > &avec, i32_gatewayid agateway, T &adata) |
| 发送forward_g2c包装器到网关/用户批次。 | |
Static Public Member Functions | |
| static nws & | instance () |
| 获取WebSocket单例服务实例。 | |
WebSocket传输门面类。
作为WebSocket网络层的统一管理类,提供完整的WebSocket服务器和客户端功能。 主要职责包括:
| void ngl::nws::close | ( | i32_sessionid | asession | ) |
关闭会话并通知actor级连接处理器。
| asession | 要关闭的会话ID |
| void ngl::nws::close_net | ( | i32_sessionid | asession | ) |
关闭会话但不触发actor级通知。
| asession | 要关闭的会话ID |
| bool ngl::nws::connect | ( | const std::string & | aip, |
| i16_port | aport, | ||
| const std::function< void(i32_sessionid)> & | afun ) |
发起异步WebSocket连接请求。
| aip | 目标IP地址 |
| aport | 目标端口号 |
| afun | 连接成功后的回调函数 |
| bool ngl::nws::connect | ( | const std::string & | aip, |
| i16_port | aport, | ||
| const std::function< void(i32_sessionid)> & | afun, | ||
| bool | await, | ||
| bool | areconnection ) |
发起异步WebSocket连接请求(带阻塞等待和重连选项)。
| aip | 目标IP地址 |
| aport | 目标端口号 |
| afun | 连接成功后的回调函数 |
| await | 是否阻塞等待连接建立 |
| areconnection | 连接断开后是否自动重连 |
| bool ngl::nws::connect | ( | i32_serverid | aserverid, |
| const std::function< void(i32_session)> & | afun, | ||
| bool | await, | ||
| bool | areconnection ) |
连接到已配置的服务器。
| aserverid | 目标服务器ID |
| afun | 连接成功后的回调函数 |
| await | 是否阻塞等待连接建立 |
| areconnection | 连接断开后是否自动重连 |
| bool ngl::nws::init | ( | i16_port | aport, |
| i32_threadsize | asocketthreadnum, | ||
| bool | aouternet, | ||
| bool | ause_tls = false, | ||
| const ws_tls_options & | atls_options = {} ) |
初始化WebSocket服务端/客户端服务。
| aport | 监听端口号 |
| asocketthreadnum | socket工作线程数量 |
| aouternet | 是否允许公网客户端连接 |
| ause_tls | 是否启用TLS(WSS) |
| atls_options | TLS配置选项 |
|
inlinestatic |
获取WebSocket单例服务实例。
| const std::string & ngl::nws::ip | ( | const net_works & | anets | ) |
选择合适的IP地址。
机器人节点选择公网IP,否则选择内网IP。
| anets | 网络地址信息列表 |
| bpool & ngl::nws::pool | ( | ) |
获取共享的出站pack池。
| i16_port ngl::nws::port | ( | ) |
获取绑定的监听端口。
| bool ngl::nws::send | ( | const std::map< i32_sessionid, i64_actorid > & | asession, |
| const Y & | adata, | ||
| i64_actorid | aactorid ) |
向多个会话广播类型化载荷。
| Y | 要发送的数据类型 |
| T | 网络传输类型,默认为Y |
| asession | 目标会话ID和Actor ID的映射 |
| adata | 要发送的数据 |
| aactorid | 发送方Actor ID |
| bool ngl::nws::send | ( | const std::map< i32_sessionid, i64_actorid > & | asession, |
| i64_actorid | aactorid, | ||
| std::shared_ptr< pack > & | apack ) |
将已构建的pack广播到多个会话。
| asession | 目标会话ID和Actor ID的映射 |
| aactorid | 发送方Actor ID |
| apack | 要广播的数据包 |
| bool ngl::nws::send | ( | const std::set< i32_sessionid > & | asession, |
| const Y & | adata, | ||
| i64_actorid | aactorid, | ||
| i64_actorid | arequestactorid ) |
向多个会话广播类型化载荷(带请求Actor ID)。
| Y | 要发送的数据类型 |
| T | 网络传输类型,默认为Y |
| asession | 目标会话ID集合 |
| adata | 要发送的数据 |
| aactorid | 发送方Actor ID |
| arequestactorid | 请求方Actor ID |
| bool ngl::nws::send | ( | const std::set< i32_sessionid > & | asession, |
| i64_actorid | aactorid, | ||
| i64_actorid | arequestactorid, | ||
| std::shared_ptr< pack > & | apack ) |
将已构建的pack广播到多个会话(带请求Actor ID)。
| asession | 目标会话ID集合 |
| aactorid | 发送方Actor ID |
| arequestactorid | 请求方Actor ID |
| apack | 要广播的数据包 |
| bool ngl::nws::send | ( | i32_sessionid | asession, |
| const Y & | adata, | ||
| i64_actorid | aactorid, | ||
| i64_actorid | arequestactorid ) |
序列化并发送类型化载荷到单个会话。
| Y | 要发送的数据类型 |
| T | 网络传输类型,默认为Y |
| asession | 目标会话ID |
| adata | 要发送的数据 |
| aactorid | 发送方Actor ID |
| arequestactorid | 请求方Actor ID |
| bool ngl::nws::send_client | ( | const std::vector< std::pair< i32_actordataid, i16_area > > & | avec, |
| i32_gatewayid | agateway, | ||
| T & | adata ) |
发送forward_g2c包装器到网关/用户批次。
| T | 要发送的数据类型 |
| avec | 目标用户ID和区域ID的列表 |
| agateway | 目标网关服务器ID |
| adata | 要发送的数据 |
| bool ngl::nws::send_client | ( | i32_actordataid | auid, |
| i16_area | aarea, | ||
| i32_gatewayid | agateway, | ||
| T & | adata ) |
发送forward_g2c包装器到单个网关。
| T | 要发送的数据类型 |
| auid | 目标用户ID |
| aarea | 目标区域ID |
| agateway | 目标网关服务器ID |
| adata | 要发送的数据 |
| bool ngl::nws::send_msg | ( | i32_sessionid | asession, |
| const std::string & | amsg ) |
通过WebSocket发送原始文本消息。
| asession | 目标会话ID |
| amsg | 要发送的文本消息 |
| bool ngl::nws::send_pack | ( | i32_sessionid | asession, |
| std::shared_ptr< pack > & | lpack ) |
发送一个已构建的类型化数据包。
| asession | 目标会话ID |
| lpack | 要发送的数据包共享指针 |
| bool ngl::nws::send_pack | ( | i32_sessionid | asession, |
| std::shared_ptr< void > & | lpack ) |
发送类型擦除的数据包。
| asession | 目标会话ID |
| lpack | 类型擦除的数据包共享指针 |
| bool ngl::nws::send_server | ( | const std::set< i32_serverid > & | aserverids, |
| const Y & | adata, | ||
| i64_actorid | aactorid, | ||
| i64_actorid | arequestactorid ) |
向多个服务器广播类型化载荷。
| Y | 要发送的数据类型 |
| T | 网络传输类型,默认为Y |
| aserverids | 目标服务器ID集合 |
| adata | 要发送的数据 |
| aactorid | 发送方Actor ID |
| arequestactorid | 请求方Actor ID |
| bool ngl::nws::send_server | ( | i32_serverid | aserverid, |
| const Y & | adata, | ||
| i64_actorid | aactorid, | ||
| i64_actorid | arequestactorid ) |
先解析服务器会话,再序列化并发送载荷。
| Y | 要发送的数据类型 |
| T | 网络传输类型,默认为Y |
| aserverid | 目标服务器ID |
| adata | 要发送的数据 |
| aactorid | 发送方Actor ID |
| arequestactorid | 请求方Actor ID |
| bool ngl::nws::send_server | ( | i32_serverid | aserverid, |
| std::shared_ptr< pack > & | apack ) |
向指定服务器发送数据包。
| aserverid | 目标服务器ID |
| apack | 要发送的数据包共享指针 |
| void ngl::nws::set_close | ( | int | asession, |
| const std::string & | aip, | ||
| i16_port | aport, | ||
| const std::function< void(i32_sessionid)> & | afun ) |
为会话注册自动重连行为。
| asession | 会话ID |
| aip | 重连目标IP地址 |
| aport | 重连目标端口 |
| afun | 重连成功后的回调函数 |