libpomelo 是 Pomelo 的 C 语言客户端 SDK。
创建客户端实例
// create a client instance. pc_client_t *client = pc_client_new();
添加 listeners
// add some event callback. pc_add_listener(client, "onHey", on_hey); pc_add_listener(client, PC_EVENT_DISCONNECT, on_close);
Listener 定义
// disconnect event callback. void on_close(pc_client_t *client, const char *event, void *data) { printf("client closed: %d.\n", client->state); }
#define PC_EVENT_DISCONNECT "disconnect" #define PC_EVENT_TIMEOUT "timeout" #define PC_EVENT_KICK "onKick"
连接服务器
struct sockaddr_in address; memset(&address, 0, sizeof(struct sockaddr_in)); address.sin_family = AF_INET; address.sin_port = htons(port); address.sin_addr.s_addr = inet_addr(ip); // try to connect to server. if(pc_client_connect(client, &address)) { printf("fail to connect server.\n"); pc_client_destroy(client); return 1; }
Send a notify
// notified callback void on_notified(pc_notify_t *req, int status) { if(status == -1) { printf("Fail to send notify to server.\n"); } else { printf("Notify finished.\n"); } // release resources json_t *msg = req->msg; json_decref(msg); pc_notify_destroy(req); } // send a notify void do_notify(pc_client_t *client) { // compose notify. const char *route = "connector.helloHandler.hello"; json_t *msg = json_object(); json_t *json_str = json_string("hello"); json_object_set(msg, "msg", json_str); // decref json string json_decref(json_str); pc_notify_t *notify = pc_notify_new(); pc_notify(client, notify, route, msg, on_notified); }
Send a request
// request callback void on_request_cb(pc_request_t *req, int status, json_t *resp) { if(status == -1) { printf("Fail to send request to server.\n"); } else if(status == 0) { char *json_str = json_dumps(resp, 0); if(json_str != NULL) { printf("server response: %s\n", json_str); free(json_str); } } // release relative resource with pc_request_t json_t *msg = req->msg; pc_client_t *client = req->client; json_decref(msg); pc_request_destroy(req); // stop client pc_client_stop(client); } // send a request void do_request(pc_client_t *client) { // compose request const char *route = "connector.helloHandler.hi"; json_t *msg = json_object(); json_t *str = json_string("hi~"); json_object_set(msg, "msg", str); // decref for json object json_decref(str); pc_request_t *request = pc_request_new(); pc_request(client, request, route, msg, on_request_cb); }
1.然后是下载GYP,它是由 Chromium 团队开发的跨平台自动化项目构建工具,安装后可以使用其构建出libpomelo的vs工程项目,再而进行编译,这步先下载,地址: http://code.google.com/p/gyp/source/checkout # Non-members may check out a read-only working copy anonymously ov
接上篇文章: 我在建立的工程中的HelloWorldScene.ccp文件里添加了如下代码: 注意标红的地方: pc_client_t *client = pc_client_new(); // 注意这里,因为我是用android的真机测试.在最开始的时候ip地址填写的是127.0.0.1. 结果怎么测试都不能通过 int re = pc_client_connect(client, &
最近听说pomelo这个开源的游戏服务器框架不错,文档也比较详细(这都是听说,实际上.....还是接着往下看吧)于是拿来研究研究。因为做iphone游戏的缘故,所以打算在Mac OS X上安装,按照官方的文档指南,pomelo终于安装成功,除了node.js在安装过程中出过一些意外还是比较顺利。 接下来在安装客户端libpomelo库时按照官方地址https://github.com/NetEas
这几天看了libpomelo的cocos2dx客户端 这是个聊天室,由2个场景构成,登录场景LoginScene,聊天场景ChatScene。 一. LoginScene 客户端是以Login场景来启动的 Login场景初始化时 先构造各种控件比如文本框,然后为登录按钮绑定登录回调 创建menu及其回调 CCMenuItemLabel *pMenuItem = CCMenuItemLabel:
编译过程中出现 error C2371: 'ssize_t' : redefinition; different basic types的错误,这是因为uv-win.h和cocos2d-x3.2中的ccconsole.h头文件重复定义引起的。 解决办法为,uv-win.h中 #if !defined(_SSIZE_T_) && !defined(_SSIZE_T_DEFINED) typedef
1.问题描述 在cocos2d-x客户端中使用libpomelo与服务端进行通讯,pc_client_connect(client, &address)始终返回-1,console打印:Invalid Pomelo client state: 5. 进入pomelo.h头文件中查看client state相关定义: /** * Pomelo client states. */ typedef
1. 从https://github.com/NewYuil/libpomelo 获得代码,放在 cocos2droot/cocos2dx/platform/third_party/android/prebuilt 下面,与其他文件夹整齐排列。目前只有这里的libpomelo是可以不修改在ndk下编译过的。但是里面bug还是挺多的。 修改里面的 deps/jansson/jansson_conf
从 https://github.com/NetEase/libpomelo 下载最新版,解压,进入目录编译静态库 ./pomelo_gyp -DTO=ios ./build_ios ./build_iossim 分别生成了ios设备(arm)和ios虚拟机(i386)的静态库,用lipo把两个打包在一起: lipo -create ./build/Default-iphoneos/libpome
★表示该语言的推荐客户端。 ActionScript as3redis Repository cwahlers C hiredis ★ Repository antirez pnoordhuis 这是官方的C语言客户端。支持全部的set命令,管道,事件驱动编程 credis Repository libredis Repository 通过poll,ketama哈希支持在多服务器上并行执行命令 C
在欢迎你拥抱OpenFOAM之前,首先欢迎来到C++的世界! 若有程序员说 xxx语言是世界上最好的语言 不严重的情况是整个聊天群下午就会爆掉了,严重的是会引起人身攻击的。虽然PHP直接在官方文档里面说 PHP is the best language for web programming 但C++并没有说C++ is the best language for scientific compu
使用Cloud Foundry功能“Polyglot”集成服务发现和通过内部路由在服务容器之间直接通信,负载平衡如何工作?Cloud Foundry是否负责负载平衡?有没有一种方法可以利用客户端负载平衡,比如在这种支持Polyglot的通信之上使用Ribbon?
本文向大家介绍c#语言Parallel.For,包括了c#语言Parallel.For的使用技巧和注意事项,需要的朋友参考一下 示例 一个使用Parallel.For循环对网站网址的给定数组执行ping操作的示例。
本文向大家介绍C语言errno,包括了C语言errno的使用技巧和注意事项,需要的朋友参考一下 示例 当标准库函数失败时,通常会将errno设置为适当的错误代码。C标准要求至少设置3个errno值: 值 含义 益登 域错误 范围 范围误差 序列号 非法的多字节字符序列
本文向大家介绍C#语言for,包括了C#语言for的使用技巧和注意事项,需要的朋友参考一下 示例 语法: for (initializer; condition; iterator) 在for当已知迭代次数回路常用。 在initializer进入循环之前,本节中的语句仅运行一次。 本condition节包含一个布尔表达式,该布尔表达式在每次循环迭代结束时进行评估,以确定循环是应该退出还是应该再次运
C/C++ 语言参考 基本C/C++ 预处理命令 操作符优先级 转义字符 ASCII码表 基本数据类型 关键字 标准 C 库: Standard C I/O Standard C String & Character Standard C Math Standard C Time & Date Standard C Memory Other standard C functions C++ C++
C语言是一门面向过程、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。