net_ex
简介
增强的网络功能库,目前支持websocket、gs socket两种
组件接口
net_ex.gs
函数原型 | 函数作用 |
---|---|
object self() | 返回pkg.net_ex对象自身 |
void start_server(string name, int port, map para = ) | 开启gs socket网络服务 |
void start_ws_server(string name, int port, map para = ) | 开启websocket socket网络服务 |
void stop_server(string name) | 停止指定名称的网络服务 |
object connect(string host, int port, map para = , int timeout = 10) | 连接gs socket主机 |
object connect_ws(string host, int port, map para = , int timeout = 10) | 连接websocket主机 |
void stop_all_servers() | 停止所有网络服务 |
map get_all_servers() | 获取所有网络服务对象词典 |
void dump_servers() | 调试接口,输出监听端口信息 |
object get_server(string name) | 获取指定名称的网络服务对象 |
样例
#pragma parallel
import gs.lang.*;
import gs.util.*;
import pkg.net_ex;
readonly int port := 12345;
void create()
{
net_ex.load_all_entry(__DIR__ "server_cmds/");
net_ex.load_all_entry(__DIR__ "client_cmds/");
}
public object test1()
{
map para = {
};
net_ex.start_server("a", port, para);
return net_ex.get_server("a");
}
public object test2()
{
map para = {
"auto_reconnect" : 3f, // 断线后3秒重连
"keep_alive" : 10f, // 10秒一个心跳(ping)
};
object c = net_ex.connect("127.0.0.1", port, para);
return c;
}
// client_cmds/msg_hi.gs
#pragma parallel
component pkg.net_ex.FCmdHandler;
mixed main(object conn, mixed op = nil)
{
printf("msg_hi, %M: %M\n", conn, op);
}
// server_cmds/cmd_hi.gs
#pragma parallel
component pkg.net_ex.FCmdHandler;
mixed main(object conn, mixed op = nil)
{
printf("cmd_hi, %M: %M\n", conn, op);
conn.send("msg_hi", op);
}