您的第一个PHP WebSocket客户端
#教程 #php #websocket #realtimemarketdata

本教程将指导您在PHP中设置Websocket,并演示如何获取实时市场数据。我们将利用直接的编辑器和作曲家软件包管理来简化获得必要程序的过程。

sign-up for free访问实时和历史外汇,CFD和加密数据。 Tradermade每月提供1000个免费请求。另外,登录后,您可以自开始进行14天的Websocket试用。

环境设置。
要确定PHP是否已经可用,请打开命令窗口并键入“ php.exe -version”;如果版本号返回,则可以继续进行编码部分;否则,您必须安装PHP。此外,您需要FX数据服务的API密钥。免费注册,获取流媒体API密钥,然后从用户仪表板开始14天的Websocket试用。否则,请在我们的数据文档页面上使用预填充的代码示例。

设置PHP
设置PHP所需的三个简单步骤。

  1. 从PHP网站下载php.exe构建文件,然后将其拆开为新目录。

  2. 更新您的类路径或“环境变量”以反映php.exe的位置。

  3. 您可能会使用以下命令的输出来检查设置,将显示PHP安装的版本号。

//for windows
php.exe -version
// for linux
php -version

预期输出。

PHP 7.2.24-0ubuntu0.18.04.13 (cli) (built: Jul  6 2022 12:23:22) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.2.24-0ubuntu0.18.04.13, Copyright (c) 1999-2018, by Zend Technologies

制作项目目录设置。
让我们首先为我们的源代码和依赖项制作目录。尽管我已经为此目录提供了名称WebScoketClientPHP,但您可以给它提供任何选择。

安装作曲家软件包管理器是下一步。一旦确认了这一点,我们就可以下载所需的包裹。在您在上一步中创建的目录中运行以下命令。

composer require textalk/websocket

编写一些代码,我们可以吗?
请在您的源目录中制作一个名为WebSocketClient.php的新文件,然后在您首选的文本编辑器开发环境中打开它。

我们将首先添加我们所需的语句和PHP标签,然后再从作曲家导入软件包。

<?php>
  require_once("vendor/autoload.php");
<?>

如下所示,我们可以通过为WebSocket服务提供URL来构建新的Websocket。我们可以将此新的Websocket分配给客户端变量。

$client = new WebSocketClient("wss://marketdata.tradermade.com/feedadv");

我们必须等待Websocket在使用API​​键发送我们的登录响应之前,向服务器提供“连接”消息。

$message =  $client->receive();
echo $message;
$client->text("{"userKey":"YOUR_API_KEY", "symbol":"GBPUSD,EURUSD"}");

我们建立了连接并提交了连接字符串,我们将立即进入循环以连续检查外汇价格数据的更新。

while(true){
   $message =  $client->receive();
   echo " Data ", $message, "
";
}

我们可能会运行我们的软件并查看结果。

php WebSocketClient.php

瞧!现在,您可以看到现场货币汇率流。

Data {"symbol":"GBPUSD","ts":"1651244018768","bid":1.25486,"ask":1.25486,"mid":1.25486}
Data {"symbol":"GBPUSD","ts":"1651244018790","bid":1.25486,"ask":1.25488,"mid":1.2548699}
Data {"symbol":"GBPUSD","ts":"1651244018791","bid":1.25482,"ask":1.25488,"mid":1.2548499}
Data {"symbol":"GBPUSD","ts":"1651244018796","bid":1.25487,"ask":1.25488,"mid":1.254875}
Data {"symbol":"GBPUSD","ts":"1651244018815","bid":1.25485,"ask":1.25488,"mid":1.2548649}
Data {"symbol":"GBPUSD","ts":"1651244018816","bid":1.25485,"ask":1.25486,"mid":1.254855}
Data {"symbol":"GBPUSD","ts":"1651244018842","bid":1.25485,"ask":1.25487,"mid":1.25486}
Data {"symbol":"GBPUSD","ts":"1651244018866","bid":1.25485,"ask":1.25486,"mid":1.254855}
Data {"symbol":"GBPUSD","ts":"1651244018868","bid":1.25484,"ask":1.25486,"mid":1.25485}

现在我们有了数据,我们可以考虑将其处理成可用的格式。首先,我们必须确定收到的数据是数据项还是“连接”消息。然后,我们可以通过解析数据来解析元素。

if(strcmp($message,"connected") !== 0){
        $decoded_json = json_decode($message);
        echo $decoded_json->symbol, $decode-json->ts, $decode_jdon->bid, $decode__json->ask, "
";
}

您可以实时查看汇率。

EURUSD 1651244529366 1.05515 1.05517
GBPUSD 1651244529371 1.2554 1.2554
GBPUSD 1651244529385 1.2554 1.25541
EURUSD 1651244529389 1.05515 1.05516
EURUSD 1651244529416 1.05518 1.05519
GBPUSD 1651244529455 1.25542 1.25543
GBPUSD 1651244529458 1.25542 1.25546
GBPUSD 1651244529492 1.2554 1.25546
GBPUSD 1651244529496 1.2554 1.25545

就是这样;您的Websocket现在应该运行。如果您有任何问题,请随时通过我们的联系页面或在线聊天与我们联系。