Closed panxianhai closed 3 years ago
你有多少子账号的key,该SDK会单独记录对应key的数据返回。 列如:
$okex->keysecret([
'key'=>'key_1',
'secret'=>'secret_1',
'passphrase'=>'passphrase_1',
]);
$okex->subscribe([
//public
'spot/depth5:BCH-USDT',
'futures/depth5:BCH-USD-210326',
'swap/depth5:BCH-USD-SWAP',
'option/depth5:BTCUSD-20201021-11750-C',
//private
'futures/position:BCH-USD-210326',
'futures/account:BCH-USDT',
'swap/position:BCH-USD-SWAP',
]);
以上代码就是订阅key_1的数据
如果你有多个key~~,你可以这样
$okex->keysecret([
'key'=>'key_2',
'secret'=>'secret_2',
'passphrase'=>'passphrase_2',
]);
$okex->subscribe([
//public
'spot/depth5:BCH-USDT',
'futures/depth5:BCH-USD-210326',
'swap/depth5:BCH-USD-SWAP',
'option/depth5:BTCUSD-20201021-11750-C',
//private
'futures/position:BCH-USD-210326',
'futures/account:BCH-USDT',
'swap/position:BCH-USD-SWAP',
]);
获取数据也是同理,你只要设置了key 它就会订阅或者读取对应的key
可以查看日志文件,就会发现, 如果你是多个KEY,日志文件就会出现多个key的连接
$okex->keysecret([
'key'=>'key_1',
'secret'=>'secret_1',
'passphrase'=>'passphrase_1',
]);
$okex->keysecret([
'key'=>'key_2',
'secret'=>'secret_2',
'passphrase'=>'passphrase_2',
]);
$okex->subscribe([
//public
'spot/depth5:BCH-USDT',
'futures/depth5:BCH-USD-210326',
'swap/depth5:BCH-USD-SWAP',
'option/depth5:BTCUSD-20201021-11750-C',
//private
'futures/position:BCH-USD-210326',
'futures/account:BCH-USDT',
'swap/position:BCH-USD-SWAP',
]);
可以写成这个样子?还是subscribe也要执行两次。
subscribe 也要执行两次。 对应的key 执行对应订阅或者读取方法。
如下:
$okex->keysecret([
'key'=>'key_1',
'secret'=>'secret_1',
'passphrase'=>'passphrase_1',
]);
$okex->subscribe([
//public
'spot/depth5:BCH-USDT',
'futures/depth5:BCH-USD-210326',
'swap/depth5:BCH-USD-SWAP',
'option/depth5:BTCUSD-20201021-11750-C',
//private
'futures/position:BCH-USD-210326',
'futures/account:BCH-USDT',
'swap/position:BCH-USD-SWAP',
]);
$okex->keysecret([
'key'=>'key_2',
'secret'=>'secret_2',
'passphrase'=>'passphrase_2',
]);
$okex->subscribe([
//public
'spot/depth5:BCH-USDT',
'futures/depth5:BCH-USD-210326',
'swap/depth5:BCH-USD-SWAP',
'option/depth5:BTCUSD-20201021-11750-C',
//private
'futures/position:BCH-USD-210326',
'futures/account:BCH-USDT',
'swap/position:BCH-USD-SWAP',
]);
client 订阅和读取可以不用一个进程下面, 跟PHP-FPM一样,跟开发网页一样用过ID或者key来进程订阅。
这个应该无法动态的添加keysecret参数了吧,比如之前跑了几个,又动态的往里面添加一个。
可以动态添加的,前提是server端没有重启过。 你可以看server 输出的日志, 你订阅多个用户私有频道的数据,还可以通过同样的方法再次订阅。 而日志会输出新用户监听的状态。 目前websocket 只支持V3 后期我会把V5 SOCKET 添加上
server端重启,需要全部重新订阅所有频道。
我看websocket的通知里没有key相关的返回,怎么把一个交易对和一个key关联起来呢?
交易对,无法跟key关联。交易对是属于公共数据的, 任何key都可以获取
我的意思是,我订阅了key1和key2的订单交易通知,workerman只有一个进程,这样订单通知过来的时候分不出来是哪个key的订单。
$okex->keysecret([
'key'=>'key_1',
'secret'=>'secret_1',
'passphrase'=>'passphrase_1',
]);
//你设置了config 获取到的数据只能是key_1的
$okex->getSubscribes()
请问下,如何利用client实时监听订阅的数据呢,目前server端已经运行起来了,但是client并没有实时监听,client实时监听的例子有吗。
你可以看看这个websocket获取行情的例子,https://github.com/zhouaini528/websocket-market
php huobi_client_spot.php start -d
client执行的时候,提示已经在运行了,就是和server冲突了,所以运行不起来,V5的版本。行情那个好像是V3的版本。
你ps一下看你是否没有把进程杀死, 每次重启server和client 要把对应的交易所进程杀死 你可以这样试试 php huobi_client_spot.php stop
V5的版本。行情那个好像是V3的版本。我clone行情软件可以运行起来。我运行这个库的test里面的v5,两个不能同时运行起来。
原理都一样的,你把demo里面的代码以及订阅 换成V5也行。 无论V5 V3 server必须守护进程,client可以不用守护, 你php 运用一次 getSubscribes() 就可以获取当前数据
逻辑原理:server 获取交易所数据、client 获取server已经缓存在本地的数据。
比如一个主账号,多个子账号,每个只账号都有一个api key。websocket那部分是要同时写几个不同的文件来支持这种多账号吗。