如何通过 WebSocket 接口订阅实时外汇行情数据(PHP 示例)
【摘要】 步骤 1:准备工作确保已安装 PHP 和 Composer,安装 WebSocket 客户端库:composer require textalk/websocket 步骤 2:编写代码订阅行情以下是最简可运行的 PHP 示例,订阅 EUR/USD 的 1分钟K线数据:<?php require 'vendor/autoload.php';use WebSocket\Client; // ...
步骤 1:准备工作
确保已安装 PHP 和 Composer,安装 WebSocket 客户端库:
composer require textalk/websocket
步骤 2:编写代码订阅行情
以下是最简可运行的 PHP 示例,订阅 EUR/USD 的 1分钟K线数据:
<?php
require 'vendor/autoload.php';
use WebSocket\Client;
// API KEY申请:www.infoway.io
$apiKey = 'yourApiKey';
$wsUrl = "wss://data.infoway.io/ws?business=forex&apikey=$apiKey";
// 初始化客户端
$client = new Client($wsUrl, ['timeout' => 60]);
// 构造订阅请求
$initMessage = [
"code" => 10004,
"trace" => uniqid(),
"data" => [
"arr" => [
[
"type" => 1, // 1 分钟K线
"codes" => "EURUSD" // 支持多个货币对,例如 EURUSD,USDJPY
]
]
]
];
// 发送订阅请求
$client->send(json_encode($initMessage));
// 开始接收数据 + 维持连接
$startTime = time();
while (true) {
try {
// 每30秒发一次ping保活
if (time() - $startTime >= 30) {
$client->send(json_encode(["code" => 10010, "trace" => uniqid()]));
$startTime = time();
}
// 接收推送数据
$message = $client->receive();
echo "Received: $message\n";
} catch (Exception $e) {
echo "Error: " . $e->getMessage() . "\n";
break;
}
}
说明
business=forex
: 订阅外汇业务数据
type=1
: 表示订阅 1 分钟 K线
codes
: 货币对,如 EURUSD
、USDJPY
、GBPUSD
code=10004
: 表示订阅K线的请求
code=10010
: 保活心跳包(每30秒发送一次)
常见问题
可以订阅多个货币对吗?
可以,多个代码用英文逗号分隔,如 "codes"
=> "EURUSD,USDJPY"
是否支持其他K线周期?
支持,修改 type
的传入值可以获取不同周期的K线(请参考官方文档定义)。
是否需要断线重连逻辑?
强烈建议生产环境加入重连机制和错误日志。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)