Your First PHP WebSocket Client

Your First PHP WebSocket Client

Obtain Real-Time Market Data from TraderMade Using PHP

This tutorial will guide you through setting up WebSocket in PHP and demonstrate how to acquire real-time market data. We will utilise a straightforward editor and the Composer package management to simplify the process of obtaining the necessary programmes.

Please sign-up for free to access real-time and historical Forex, CFD, and Crypto Data. TraderMade offers 1000 free requests every month. Also, you can self-start a 14-day WebSocket Trial once you log in.

Environment setup.

To determine whether PHP is already available, open a command window and type "php.exe -version"; if a version number returns, you can move on to the coding part; otherwise, you must install PHP. Additionally, you require an API key for the FX data service. Register for Free, obtain your streaming API key and start a 14-day WebSocket trial from your user dashboard. Otherwise, use a pre-populated code sample from our data docs page.

Setting up PHP

Three simple steps to set up PHP.

  1. Download the php.exe build file from the PHP website and unpack it into a new directory.

  2. Update your classpath or "Environment Variables" to reflect PHP.exe's location.

  3. The output of the following command, which you may use to check your setup, will show the version number of your PHP installation.

//for windows

php.exe -version

// for linux

php -version

Expected Output

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

Make the project directory settings.

Let's begin by making a directory for our source code and dependencies. Although I've given this directory the name WebScoketClientPHP, you can give it any name you choose.

Installing the Composer package manager is the next step. Once this is confirmed, we can download the package we will require. Run the following command in the directory you created in the previous step.

composer require textalk/websocket

Write some code, shall we?

Please make a new file called WebSocketClient.php in your source directory and then open it in your preferred text editor development environment.

We will first add our required statement and PHP tags before importing our packages from Composer.

<?php>

require_once("vendor/autoload.php");

<?>

As seen below, we may build a new WebSocket by providing the URL for the WebSocket service. We can assign this fresh WebSocket to a client variable.

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

We must wait for the WebSocket to provide a "connected" message to the server before sending our login response with the API Key.

$message = $client->receive();

echo $message;

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

Once we have established a connection and submitted our connection string, we will immediately enter into a loop to continuously check for updates on forex price data.

while(true){

$message = $client->receive();

echo " Data ", $message, "

";

}

We may run our software and review the results.

php WebSocketClient.php

Voila! Right now, you can see live currency rates streaming.

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}

Now that we have the data, we may consider processing it into a usable format. First, we must determine whether the data received is a data item or the "connected" message. We can then parse the elements from the data by parsing it.

if(strcmp($message,"connected") !== 0){

$decoded_json = json_decode($message);

echo $decoded_json->symbol, $decode-json->ts, $decode_jdon->bid, $decode__json->ask, "

";

}

You can view currency rates displayed in real-time.

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

And that's it; your WebSocket should now be operational. If you have any issues, don't hesitate to reach us through our contact page or online chat.

Also, refer to the other PHP-based technical tutorials by TraderMade to fetch market data via REST API, and a few other aspects:

Forex REST JSON API with PHP

Real-Time Forex Data into OHLC Bars with PHP

If you wish to learn fetching live streaming forex rates via WebSockets, using a few other popular programming languages, the following technical tutorials will help you:

Python WebSocket Client

Real-Time Market Data via WebSockets with C#

Real-Time Forex WebSocket with Java