node-ctp的編譯和安裝

node-ctp是一項開創性的工做,解決了CTP接口與node.js結合的問題,源代碼在此:https://github.com/zoohanyoo/node-ctp。node

感謝zoohanyoo爲此所作的努力,相信這其中有不少個不眠之夜,由於libuv和v8都足夠複雜。node-ctp最突出的貢獻是給出了node.js主線程與動態連接庫so線程之間交互的一種可行的解決方案,目前尚不知道是否有其餘更優的方案。git

node-ctp不完美的地方是該工具開發於兩年前,具有雛形以後沒有繼續維護,沒能跟上node.js快速前進的步伐。這樣的後果是當我嘗試用最新的node.js編譯node-ctp的時候,會獲得一系列使人精神崩潰的報錯,好比這樣:github

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

還有這樣:
../src/wrap_trader.h:30:37: error: 'Arguments' does not name a type
static Handle<Value> Connect(const Arguments& args); centos

在嘗試修改源代碼未果後,我決定還原node-ctp當年的開發環境,以此來避免編譯時遇到的錯誤。如今看來,這無疑是十分明智的。api

node-ctp依賴的node.js的版本是0.10.26,npm版本是1.4.29,node-gyp版本是1.0.2,都是2014年的古董。幸運的是,這些古董在網上都可以下載到,說明node.js的生態環境是很是健康的,維護者已經知曉用戶存在這樣的需求。這是一個很是好的信號。node-ctp依賴的centos版本是6.x。tcp

0、準備centos 6.4系統。這個系統須要可以鏈接到互聯網,這是基本要求。工具

一、node.js的安裝過程:測試

下載node.js的0.10.26版本(感謝淘寶)ui

./configure

make

make install 須要root權限

make test

二、npm的安裝過程:

下載npm的1.4.29版本(感謝Jack Ma老闆)

./configure

make

make install 須要root權限

三、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同樣直接運行

四、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的頭文件

五、安裝完畢後能夠進行基本的測試

爲此可在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

相關文章
相關標籤/搜索