跳到主要内容

proxy_server

简介

代理服务器

代理服务器是一个为用户提供连接聚合服务的公共服务器

用户通过和代理服务器之间的一个长连接处理和多个不同目标服务器间的网络通讯

更详细的说明请参考: https://leiting.feishu.cn/wiki/wikcn1xIWFQ6OmFrX4v5yFhLXje

组件接口

common.gs

公共模块的启动/关闭流程处理

函数原型函数作用
void boot()启动
void shutdown()关闭

FCmdBase.gs

指令处理器基础组件

函数原型函数作用
string cmd_name()获取指令处理器名称
bool verify(object ob)验证指令处理器执行权限
map FAILURE(int id, map info = )生成一个表示失败的词典
map SUCCESS(map result = )生成一个表示成功的词典
void send_resp(object ob, mixed cookie, mixed result)发送应答消息

FSessionCmd.gs

会话消息的处理器基础组件

函数原型函数作用
string cmd_name()获取指令处理器名称
map FAILURE(int id, map info = )生成一个表示失败的词典
map SUCCESS(map result = )生成一个表示成功的词典
void send_resp(object ob, mixed cookie, mixed result)发送应答消息

config.gs

通用全局配置

函数原型函数作用
mixed get(string path)获取配置值

netd.gs

网络功能模块

函数原型函数作用
void start_server(string name, int port, map para = , bool using_websocket = false)启动网络服务
void stop_server(string name)停止网络服务

Session.gs

会话对象

客户端到proxy server之间的连接是一个Session对象

Session和User是父子关系,一个Session下可以有多个User对象

Session的输入只来自客户端

函数原型函数作用
string desc()获取描述信息
map get_info()获取本会话对象的信息词典
bool redirect_user(string name, map connect_para, function prev_callback)将指定名称的User对象重定向到指定的目标服务器上
bool create_user(string type, string name, map connect_para, string user_file = nil)创建一个连接目标服务器的User对象
void destroy_user(string name, string reason, float delay_seconds = 1)销毁一个连接目标服务器的User对象
void relay_to_user(string name, ...)将消息转发给指定的User对象
void notify_user_disconnected(object user)User对象通知: 连接断开了
void bind_user(object user)绑定一个User对象
void unbind_user(object user, string reason)解绑一个User对象
void rebind_user(object new_user)重新绑定一个User对象
array find_users(string type)查找指定用户类型的所有User对象
object get_default_user()获取本对象的默认User对象
void set_default_user(string name)设置默认User对象
bool is_connected()是否已连接
void bind_connection(object conn)绑定网络连接对象
object unbind_connection()解除绑定当前网络连接对象
void transfer_connection(object to)将当前网络连接对象传递给目标会话对象
void send(string cmd, ...)发送网络消息

User.gs

用于连接目标服务器的用户对象

User对象由Session对象创建,一个Session可以创建多个User对象

User对象负责和目标服务器的消息交互

函数原型函数作用
string desc()获取描述信息
void deliver_to_session(string cmd, array args)转发消息给Session对象
void close_in_seconds(float delay_seconds)指定时长后关闭本对象
map get_info()获取本对象信息词典
string get_type()获取本对象连接的目标服务器的类型
string get_name()获取本对象的名字
void set_owner(object owner)设置本对象的所有者
object get_owner()获取本对象的所有者
void send(string cmd, ...)发送消息到目标服务器
mixed get_type_config(string key)获取目标服务器的类型配置信息

样例

更详细的说明请参考: https://leiting.feishu.cn/wiki/wikcn1xIWFQ6OmFrX4v5yFhLXje