Commit 8ed3a4ce authored by shajiaiming's avatar shajiaiming

fix

parent c332ed8f
......@@ -61,14 +61,20 @@ class WorkermanWebSocketController extends Controller
// 4 processes
$wsWorker->count = 4;
$wsWorker->uidConnections = [];
global $uids;
// Emitted when new connection come
$wsWorker->onConnect = function ($connection) {
echo "New connection\n";
};
// Emitted when data received
$wsWorker->onMessage = function ($connection, $data) {
$wsWorker->onMessage = function ($connection, $data) use ($wsWorker, $uids) {
if (!isset($connection->uid)) {
$connection->uid = $data;
$wsWorker->uidConnections[$connection->uid] = $connection;
echo $connection->uid . ' 一共 ' . count($wsWorker->uidConnections[$connection->uid]) . PHP_EOL;
}
if ('binance' == $data) {
$con = new \Workerman\Connection\AsyncTcpConnection("ws://stream.binance.com:9443/ws/!ticker@arr");
$con->transport = 'ssl';
......@@ -94,7 +100,7 @@ class WorkermanWebSocketController extends Controller
}
}
}
$connection->send('binance : ' . json_encode($ticker));
$connection->send('binance : ' . json_encode($ticker), $connection->id);
};
$con->connect();
} elseif ('huobi' == $data) {
......@@ -103,7 +109,7 @@ class WorkermanWebSocketController extends Controller
$con = new \Workerman\Connection\AsyncTcpConnection('ws://api.huobi.pro:443/ws');
// 设置以ssl加密方式访问,使之成为wss
$con->transport = 'ssl';
$con->onConnect = function($con) {
$con->onConnect = function ($con) {
$data = json_encode([
#'sub' => 'market.btcusdt.kline.1min',
#'id' => 'depth' . time(),
......@@ -111,14 +117,14 @@ class WorkermanWebSocketController extends Controller
]);
$con->send($data);
};
$con->onMessage = function($con, $data) use ($connection) {
$con->onMessage = function ($con, $data) use ($connection) {
$data = gzdecode($data);
$data = json_decode($data, true);
if(isset($data['ping'])) {
if (isset($data['ping'])) {
$con->send(json_encode([
"pong" => $data['ping']
]));
}else if (isset($data['ch']) && 'market.overview' == $data['ch']){
} else if (isset($data['ch']) && 'market.overview' == $data['ch']) {
$base_coin = [
'ETH', 'BTC', 'USDT', 'BTY'
];
......@@ -130,7 +136,7 @@ class WorkermanWebSocketController extends Controller
$temp = [];
$temp['symbol'] = $explode_arr[0] . '/' . $coin;
$temp['close'] = (float)sprintf("%0.4f", $val['close']);
$temp['change'] = (float)sprintf("%0.4f", ($val['close'] - $val['open']) / $val['open'] * 100);
$temp['change'] = (0 == $val['open']) ? 0 : (float)sprintf("%0.4f", ($val['close'] - $val['open']) / $val['open'] * 100);
$temp['high'] = (float)sprintf("%0.4f", $val['high']);
$temp['low'] = (float)sprintf("%0.4f", $val['low']);
$temp['vol'] = (float)sprintf("%0.4f", $val['vol']);
......@@ -139,13 +145,19 @@ class WorkermanWebSocketController extends Controller
}
}
}
$connection->send('huobi : ' . json_encode($ticker));
} else {}
$connection->send('huobi : ' . json_encode($ticker), $connection->id);
} else {
}
};
$con->onClose = function ($con){
echo "connection closed\n";
$con->onClose = function ($con) use ($wsWorker) {
echo $con->id,"connection closed\n";
if(isset($con->uid))
{
// 连接断开时删除映射
unset($wsWorker->uidConnections[$con->uid]);
}
};
$con->onError = function($con, $code, $msg){
$con->onError = function ($con, $code, $msg) {
echo "Error code:$code msg:$msg\n";
};
$con->connect();
......@@ -153,7 +165,7 @@ class WorkermanWebSocketController extends Controller
$connection->websocketType = Websocket::BINARY_TYPE_ARRAYBUFFER;
$con = new \Workerman\Connection\AsyncTcpConnection("ws://real.okex.com:8443/ws/v3");
$con->transport = 'ssl';
$con->onConnect = function($con) {
$con->onConnect = function ($con) {
$data = json_encode([
'op' => 'subscribe',
'args' => [
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment