[原]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 = ; // request callback
void on_request_cb(pc_request_t *req, int status, json_t *resp) {
if(status == -) {
printf("Fail to send request to server.\n");
} else if(status == ) {
char *json_str = json_dumps(resp, );
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, , 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 ;
} 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 ;
}
成功后的提示 :
[原]pomelo开发环境搭建的更多相关文章
- pomelo 开发环境搭建
开发前提条件: Windows系统,请确保你的Windows系统包括源代码编译工具.Node.js的源代码主要由C++代码和JavaScript代码构成,可是却用gyp工具来做源代码的项目管理,该工 ...
- [原]Android开发环境搭建
[Date]2014-04-20 [Author]wintys (wintys@gmail.com) http://wintys.cnblogs.com [Keywords]android . 离线a ...
- [zz] pomelo windows 环境下开发环境搭建
原文链接:http://nodejs.netease.com/topic/515279a0b5a2705b5a000983 本文主要介绍下 windows 下跑通 pomelo 简单例子的过程 开发前 ...
- (转)PhoneGap开发环境搭建
(原)http://www.cnblogs.com/Random/archive/2011/12/28/2305398.html PhoneGap开发环境搭建 项目中要用PhoneGap开发,了解 ...
- (转)phoneGap-Android开发环境搭建
(原)http://www.cnblogs.com/shawn-xie/archive/2012/08/15/2638480.html phoneGap-Android开发环境搭建 一.安装 在安 ...
- Hadoop项目开发环境搭建(Eclipse\MyEclipse + Maven)
写在前面的话 可详细参考,一定得去看 HBase 开发环境搭建(Eclipse\MyEclipse + Maven) Zookeeper项目开发环境搭建(Eclipse\MyEclipse + Mav ...
- 【JAVA零基础入门系列】Day1 开发环境搭建
[JAVA零基础入门系列](已完结)导航目录 Day1 开发环境搭建 Day2 Java集成开发环境IDEA Day3 Java基本数据类型 Day4 变量与常量 Day5 Java中的运算符 Day ...
- JDK开发环境搭建及环境变量配置
Java配置----JDK开发环境搭建及环境变量配置 1. 下载安装安装JDK开发环境 http://www.oracle.com/technetwork/java/javase/downloads/ ...
- Redis学习系列二之.Net开发环境搭建及基础数据结构String字符串
一.简介 Redis有5种基本数据结构,分别是string.list(列表).hash(字典).set(集合).zset(有序集合),这是必须掌握的5种基本数据结构.注意Redis作为一个键值对缓存系 ...
随机推荐
- 安全运维之:网络实时流量监测工具iftop
网络管理是基础运维中一个很重要的工作,在看似平静的网络运行中,其实暗流汹涌,要保证业务系统稳定运行,网络运维者必须要了解网络的流量状态.各个网段的使用情形,带宽的利用率.网络是否存在瓶颈等,同时,当网 ...
- DRUPAL8模版命名规则
DRUPAL8模版命名规则 xiaopang 星期一, 04/08/2013 - 20:04 发布 我想了半个小时,想怎么清楚简单的为大家解释drupal8的模版命名规则,但是很显然,我失败了,但 ...
- Spring Cloud Eureka 集群搭建 - 以及发现一个 “直觉BUG”
首先解释一下标题所说的“直觉BUG”,这个是我自己的定义.就是我们直觉上认为这是一个BUG,是一个错误,而实际并没有出错. 比如下图: 虽然出现报错信息,但是,整个程序并没有出错.至于原因,图片上的文 ...
- const_cast的应用
对于const变量,我们不能修改它的值,这是这个限定符最直接的表现.但是我们就是想违背它的限定希望修改其内容怎么办呢?于是我们可以使用const_cast转换符是用来移除变量的const限定符.con ...
- 微信小程序——网盘图片预览
微信小程序图片预览提供了一个wx.previewImage接口,如下图: 现在我需要对网盘文件里的图片预览,但是网盘从后台返回的数据是各种类型的文件,如下图所示: 那么我们需要解决2个问题: 1.从这 ...
- js 获取地址栏最后一个文件名称
var JsRequest={ //这就是一个静态类,类里面有2个静态方法 //方法一:获取url的文件名 例如 index.html getUrlname:function(url){ //假如传进 ...
- Struts2技术详解
1, 当Action设置了某个属性后,Struts将这些属性封装一个叫做Struts.valueStack的属性里.获取valueStack对象: ValueStack vs = (ValueStac ...
- javascript控制页面(含iframe进行页面跳转)跳转、刷新的方法汇总
一.JS方式的页面跳转1.window.location.href方式 <script language="JavaScript" type="text/ja ...
- activity 与 fragment生命周期
一.Activity的生命周期图: 二.Fragment生命周期图 三.对比图 Log数据 Activity﹕ onCreateFragment﹕ onAttachFragment﹕ onCre ...
- 关于Unity中Mecanim动画的动画状态代码控制与代码生成动画控制器
对于多量的.复杂的.有规律的控制器使用代码生成 动画状态代码控制 1:每个动画状态,比如进入状态,离开状态, 等都有可能需要代码来参与和处理,比如,进入这个动画单元后做哪些事情,来开这个动画单元后做哪 ...