entity_client
简介
作为客户端接入实体对象服务器entity server
本pkg用于创建连接entity server的客户端连接对象;
组件接口
EntityClient.gs
处理entity server连接的对象
提示
本对象包含组件:pkg.request_client
entity_client.gs
函数原型 | 函数作用 |
---|---|
object create_client(map para) | 创建一个连接entity server的客户端连接对象 |
样例
#pragma parallel
import gs.lang.*;
import gs.util.*;
import pkg.entity_client;
readonly object _client;
readonly string _test_key := "abc";
void create()
{
map para = {
"using_websocket" : false, // 使用gs私有协议连接
"host" : "127.0.0.1", // entity server主机地址
"port" : 8931, // entity server主机端口
"token" : "CLTK1548468743", // 登录验证token
"server_id" : "demo_server1", // 本客户端身份id
"port_recv_size" : 1024 * 1024, // 接收缓冲区大小
"cookieless_msg_queue" : queue.create(""), // 接收entity server通知的队列
};
_client := entity_client.create_client(para);
_client.ping();
// 关注实体对象"abc"的数据变更
bool result = _client.focus_entity(_test_key, (map args) {
printf("key=%s, args=%O\n", args["key"], args);
});
printf("result: %O\n", result);
// 创建实体对象"abc"
map dbase = {
"a" : 1,
"b" : [ 2, 3, 4 ],
"c" : {
"x" : "o",
"y" : [ "p", "q" ],
"z" : {
"r" : "f"
}
}
};
if (! _client.get_or_create_entity(_test_key, dbase))
printf("create entity %s failed\n", _test_key);
}
void destruct()
{
_client.focus_entity(_test_key, nil);
_client.destroy_entity(_test_key);
}
public void sample()
{
bool success;
mixed v;
let success, v = _client.query_entire_dbase(_test_key);
if (success)
printf("entire dbase = %O\n", v);
let success, v = _client.query(_test_key, "a");
if (success)
printf("field a = %O\n", v);
let success, v = _client.multi_query(_test_key, [ "a", "b", "c" ]);
if (success)
printf("field a,b,c = %O\n", v);
let success, v = _client.query_by_path(_test_key, "c/z");
if (success)
printf("path c/z = %O\n", v);
let success, v = _client.sync_set(_test_key, "a", 10);
if (success)
printf("field a set success\n");
let success, v = _client.sync_delete(_test_key, "a");
if (success)
printf("field a delete success\n");
let success, v = _client.sync_dict_set(_test_key, "c", "x", "oooo");
if (success)
printf("field c.x set success\n");
let success, v = _client.sync_dict_delete(_test_key, "c", "x");
if (success)
printf("field c.x delete success\n");
let success, v = _client.async_set(_test_key, "a", 10);
if (success)
printf("field a set success\n");
let success, v = _client.async_delete(_test_key, "a");
if (success)
printf("field a delete success\n");
let success, v = _client.async_dict_set(_test_key, "c", "x", "oooo");
if (success)
printf("field c.x set success\n");
let success, v = _client.async_dict_delete(_test_key, "c", "x");
if (success)
printf("field c.x delete success\n");
}