首页 > 代码库 > node-ctp的编译和安装

node-ctp的编译和安装

node-ctp是一项开创性的工作,解决了CTP接口与node.js结合的问题,源代码在此:https://github.com/zoohanyoo/node-ctp。

感谢zoohanyoo为此所做的努力,相信这其中有很多个不眠之夜,因为libuv和v8都足够复杂。node-ctp最突出的贡献是给出了node.js主线程与动态链接库so线程之间交互的一种可行的解决方案,目前尚不知道是否有其他更优的方案。

node-ctp不完美的地方是该工具开发于两年前,具备雏形之后没有继续维护,没能跟上node.js快速前进的步伐。这样的后果是当我尝试用最新的node.js编译node-ctp的时候,会得到一系列令人精神崩溃的报错,比如这样:

../src/wrap_trader.h:24:44: error: expected class-name before ‘{‘ token
class WrapTrader : public node::ObjectWrap {
^

还有这样:
../src/wrap_trader.h:30:37: error: ‘Arguments‘ does not name a type
static Handle<Value> Connect(const Arguments& args);

在尝试修改源代码未果后,我决定还原node-ctp当年的开发环境,以此来避免编译时遇到的错误。现在看来,这无疑是十分明智的。

node-ctp依赖的node.js的版本是0.10.26,npm版本是1.4.29,node-gyp版本是1.0.2,都是2014年的古董。幸运的是,这些古董在网上都能够下载到,说明node.js的生态环境是非常健康的,维护者已经知晓用户存在这样的需求。这是一个非常好的信号。node-ctp依赖的centos版本是6.x。

0、准备centos 6.4系统。这个系统需要能够连接到互联网,这是基本要求。

1、node.js的安装过程:

下载node.js的0.10.26版本(感谢淘宝)

./configure

make

make install 需要root权限

make test

2、npm的安装过程:

下载npm的1.4.29版本(感谢Jack Ma老板)

./configure

make

make install 需要root权限

3、node-gyp的安装过程:

首先注册一个淘宝的npm镜像,这样能够加快安装速度

npm config set registry https://registry.npm.taobao.org

npm install -g node-gyp@1.0.2 需要root权限,-g的意思是将node-gyp设为全局命令,可以像node一样直接运行

4、node-ctp的build过程:

首先编辑binding.gyp文件,注意node-ctp中缺失.so文件,建议重新下载ctp api包,并将其路径设置在binding.gyp文件中

node-gyp rebuild --nodedir ~/path/to/node-v0.10.26 此处设置了node.js源代码路径,编译的时候需要node的头文件

5、安装完毕后可以进行基本的测试

为此可在www.simnow.com.cn上申请一个ctp测试账号,并设置密码,这个密码就是ctp的登陆密码。下载一个快期桌面终端,测试账号和密码的有效性。下单时会提示:“下单失败: CTP:该交易席位未连接到交易所”,尚不知原因。

修改trade_confirm.js,填入交易系统tcp地址(simnow提供)、账号、密码、会员号(9999),然后运行:

node trade_confirm.js

观察输出结果。

至此,node-ctp的编译工作完成。

上述工作耗时一天,总体感觉还算顺利,尤其是node的几个老版本工具都非常容易找到,配置过程也很简便,遇到问题在网上能搜到解决方法,这说明node.js的整个生态环境是完备的,用户也很多。目前的认识是,node-ctp完成了最核心的功能,即ctp线程与node线程的通信,其他方面我还需要花时间进一步梳理。

EOF

 

node-ctp的编译和安装