正在显示
1 个修改的文件
包含
21 行增加
和
1 行删除
| @@ -23,6 +23,8 @@ class ExBroker | @@ -23,6 +23,8 @@ class ExBroker | ||
| 23 | private OkxApi $api; | 23 | private OkxApi $api; |
| 24 | private ?Websocket $wsAcc; | 24 | private ?Websocket $wsAcc; |
| 25 | private ?Websocket $wsKline; | 25 | private ?Websocket $wsKline; |
| 26 | + private $timerAccPing = 0; | ||
| 27 | + private $timerKlinePing = 0; | ||
| 26 | 28 | ||
| 27 | public function __construct($apiInfo) | 29 | public function __construct($apiInfo) |
| 28 | { | 30 | { |
| @@ -47,12 +49,15 @@ class ExBroker | @@ -47,12 +49,15 @@ class ExBroker | ||
| 47 | $this->wsAcc->connect( | 49 | $this->wsAcc->connect( |
| 48 | $onOpen = function () { | 50 | $onOpen = function () { |
| 49 | $this->wsLogin(); | 51 | $this->wsLogin(); |
| 52 | + //开始定时ping | ||
| 53 | + $this->wsAccPing(); | ||
| 50 | }, | 54 | }, |
| 51 | $onMessage = function ($data) use ($onWsData) { | 55 | $onMessage = function ($data) use ($onWsData) { |
| 52 | $this->onWsDataPre($data, $onWsData); | 56 | $this->onWsDataPre($data, $onWsData); |
| 53 | }, | 57 | }, |
| 54 | $onClose = function () { | 58 | $onClose = function () { |
| 55 | // 关闭链接 | 59 | // 关闭链接 |
| 60 | + swoole_timer_clear($this->timerAccPing); | ||
| 56 | } | 61 | } |
| 57 | ); | 62 | ); |
| 58 | } | 63 | } |
| @@ -74,6 +79,8 @@ class ExBroker | @@ -74,6 +79,8 @@ class ExBroker | ||
| 74 | ]; | 79 | ]; |
| 75 | output("订阅", $subData); | 80 | output("订阅", $subData); |
| 76 | $this->wsKline->push(json_encode($subData)); | 81 | $this->wsKline->push(json_encode($subData)); |
| 82 | + //开始定时ping | ||
| 83 | + $this->wsKlinePing(); | ||
| 77 | }, | 84 | }, |
| 78 | $onMessage = function ($data) use ($onData) { | 85 | $onMessage = function ($data) use ($onData) { |
| 79 | $data = json_decode($data, true); | 86 | $data = json_decode($data, true); |
| @@ -84,10 +91,23 @@ class ExBroker | @@ -84,10 +91,23 @@ class ExBroker | ||
| 84 | $onData($data); | 91 | $onData($data); |
| 85 | }, | 92 | }, |
| 86 | $onClose = function () { | 93 | $onClose = function () { |
| 87 | - // 关闭链接 | 94 | + // 关闭链接 关闭定时ping |
| 95 | + swoole_timer_clear($this->timerKlinePing); | ||
| 88 | } | 96 | } |
| 89 | ); | 97 | ); |
| 90 | } | 98 | } |
| 99 | + private function wsKlinePing() | ||
| 100 | + { | ||
| 101 | + $this->timerKlinePing = swoole_timer_tick(1000 * 20, function () { | ||
| 102 | + $this->wsKline->push("ping"); | ||
| 103 | + }); | ||
| 104 | + } | ||
| 105 | + private function wsAccPing() | ||
| 106 | + { | ||
| 107 | + $this->timerAccPing = swoole_timer_tick(1000 * 20, function () { | ||
| 108 | + $this->wsAcc->push("ping"); | ||
| 109 | + }); | ||
| 110 | + } | ||
| 91 | private function crateWsSign($timeStamp) | 111 | private function crateWsSign($timeStamp) |
| 92 | { | 112 | { |
| 93 | $method = 'GET'; | 113 | $method = 'GET'; |
-
请 注册 或 登录 后发表评论