跳到主要内容

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);
}