首页 > 代码库 > [原]pomelo开发环境搭建

[原]pomelo开发环境搭建

pomelo基于nodejs服务器开源框架,比较牛逼的!

1、安装nodejs(官网下载地址) 安装python等 具体见官网说明

2、安装pomelo(见官方步骤)或者 http://blog.csdn.net/wangqiuyun/article/details/9243263

3、demo无法运行说明,1.1.1版创建出的demo浏览器点start server无响应,用firebug发现报“ReferenceError: Buffer is not defined” 这是bug解决办法 我不会用 所以我不用浏览器测试,采用非浏览器测试 (不过这说明你的环境配置成功了)
4、自己编译libpomelo库

(1)下载gyp   命令行:git clone https://github.com/martine/gyp.git  没有安装git的童鞋 可以直接下zip

  进入gyp目录 命令行 执行 setup.py install  安装gyp

(2)下载libpomelo  命令行:git clone https://github.com/NetEase/libpomelo.git 或者 下载zip

  使用gyp创建 libpomelo工程。 cmd 到 gyp根目录 执行 gyp.bat --depth=. libpomelo根路径/pomelo.gyp -Dlibrary=static_library -DTO=pc 

成功之后就会在libpomelo下创建出vs工程

(3)编译libpomelo静态库

  打开以上工程,选则整个解决方案,生成解决方案 就会编译出静态库 jansson.lib libpomelo.lib libuv.lib

(4)如何使用libpomelo.lib

 创建C++ win32工程,引用静态库

A、添加工程的头文件目录:工程---属性---配置属性---c/c++---常规---附加包含目录:加上头文件存放目录。
B、添加文件引用的lib静态库路径:工程---属性---配置属性---链接器---常规---附加库目录:加上lib文件存放目录。
C 然后添加工程引用的lib文件名:工程---属性---配置属性---链接器---输入---附加依赖项:加上lib文件名。

说明:libpomelo没有提完整的头文件路径 libpomelo\include只包含libpomelo自身的 jansson libuv 头文件需要去\libpomelo\deps下查找

最终的include文件如图:

(5)libuv.lib库运行需要 ws2_32.lib IPHLPAPI.lib Psapi.lib 按照“然后添加工程引用的lib文件名:工程---属性---配置属性---链接器---输入---附加依赖项:加上lib文件名” 添加几个库

(6)运行代码测试:

#ifdef _WIN32#include <winsock2.h>#else#include <unistd.h>#endif#include <string.h>#include <stdlib.h>#include "pomelo.h"const char *ip = "127.0.0.1";int port = 3010;// request callbackvoid 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);  pc_client_stop(client);}void do_request(pc_client_t *client) {  // compose request  const char *route = "connector.entryHandler.entry"; //改成默认web-server的设置  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);}// disconnect event callback.void on_close(pc_client_t *client, const char *event, void *data) {  printf("client closed: %d.\n", client->state);}int main() {  // create a client instance.  pc_client_t *client = pc_client_new();  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);  // add some event callback.  pc_add_listener(client, PC_EVENT_DISCONNECT, on_close);  // try to connect to server.  if(pc_client_connect(client, &address)) {    printf("fail to connect server.\n");    pc_client_destroy(client);    return 1;  }  do_request(client);  // main thread has nothing to do and wait until child thread return.  pc_client_join(client);  // release the client  pc_client_destroy(client);  return 0;}

成功后的提示 :

 

[原]pomelo开发环境搭建