Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

如何加载多个账号配置呢? #2

Closed
panxianhai opened this issue Jan 21, 2021 · 19 comments
Closed

如何加载多个账号配置呢? #2

panxianhai opened this issue Jan 21, 2021 · 19 comments

Comments

@panxianhai
Copy link

比如一个主账号,多个子账号,每个只账号都有一个api key。websocket那部分是要同时写几个不同的文件来支持这种多账号吗。

@zhouaini528
Copy link
Owner

你有多少子账号的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

@zhouaini528
Copy link
Owner

可以查看日志文件,就会发现, 如果你是多个KEY,日志文件就会出现多个key的连接

@panxianhai
Copy link
Author

panxianhai commented Jan 21, 2021

$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也要执行两次。

@panxianhai panxianhai reopened this Jan 21, 2021
@zhouaini528
Copy link
Owner

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',
]);

@zhouaini528
Copy link
Owner

client 订阅和读取可以不用一个进程下面, 跟PHP-FPM一样,跟开发网页一样用过ID或者key来进程订阅。

@panxianhai
Copy link
Author

这个应该无法动态的添加keysecret参数了吧,比如之前跑了几个,又动态的往里面添加一个。

@zhouaini528
Copy link
Owner

zhouaini528 commented Apr 20, 2021

可以动态添加的,前提是server端没有重启过。 你可以看server 输出的日志, 你订阅多个用户私有频道的数据,还可以通过同样的方法再次订阅。 而日志会输出新用户监听的状态。 目前websocket 只支持V3 后期我会把V5 SOCKET 添加上

@zhouaini528
Copy link
Owner

server端重启,需要全部重新订阅所有频道。

@panxianhai
Copy link
Author

我看websocket的通知里没有key相关的返回,怎么把一个交易对和一个key关联起来呢?

@zhouaini528
Copy link
Owner

交易对,无法跟key关联。交易对是属于公共数据的, 任何key都可以获取

@panxianhai
Copy link
Author

我的意思是,我订阅了key1和key2的订单交易通知,workerman只有一个进程,这样订单通知过来的时候分不出来是哪个key的订单。

@zhouaini528
Copy link
Owner

zhouaini528 commented Jul 16, 2021

$okex->keysecret([
    'key'=>'key_1',
    'secret'=>'secret_1',
    'passphrase'=>'passphrase_1',
]);
//你设置了config 获取到的数据只能是key_1的
$okex->getSubscribes()

@panxianhai
Copy link
Author

请问下,如何利用client实时监听订阅的数据呢,目前server端已经运行起来了,但是client并没有实时监听,client实时监听的例子有吗。

@zhouaini528
Copy link
Owner

你可以看看这个websocket获取行情的例子,https://github.com/zhouaini528/websocket-market

@panxianhai
Copy link
Author

panxianhai commented Jul 21, 2021

php huobi_client_spot.php start -d

client执行的时候,提示已经在运行了,就是和server冲突了,所以运行不起来,V5的版本。行情那个好像是V3的版本。

@zhouaini528
Copy link
Owner

zhouaini528 commented Jul 21, 2021

你ps一下看你是否没有把进程杀死, 每次重启server和client 要把对应的交易所进程杀死
你可以这样试试 php huobi_client_spot.php stop

@panxianhai
Copy link
Author

panxianhai commented Jul 21, 2021

V5的版本。行情那个好像是V3的版本。我clone行情软件可以运行起来。我运行这个库的test里面的v5,两个不能同时运行起来。

@zhouaini528
Copy link
Owner

原理都一样的,你把demo里面的代码以及订阅 换成V5也行。 无论V5 V3 server必须守护进程,client可以不用守护, 你php 运用一次 getSubscribes() 就可以获取当前数据

@zhouaini528
Copy link
Owner

逻辑原理:server 获取交易所数据、client 获取server已经缓存在本地的数据。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants