carpenstar / bybitapi-sdk-websockets-v5
5.0.1.0
2025-04-13 22:34 UTC
Requires
- php: >=7.4
- carpenstar/bybitapi-sdk-core: 5.2.*
- workerman/workerman: 4.1.16
This package is auto-updated.
Last update: 2025-04-17 20:32:35 UTC
README
Important
This is an unofficial SDK for interacting with the ByBit exchange.
Development is maintained by a single individual on a voluntary basis as time permits.
Contact support:
- GitHub Issues
- Email: mighty.vlad@gmail.com
- Telegram: @novisad0189
Note
This package extends bybitapi-sdk-core
📡 Available Data Streams
Public Streams
Name | Documentation | Function Call | Example |
---|---|---|---|
Kline | Docs | go | go |
Orderbook | Docs | go | go |
Trade | Docs | go | go |
Ticker | Docs | In development... | In development... |
All Liquidation | Docs | In development... | In development... |
LT Kline | Docs | In development... | In development... |
LT Ticker | Docs | In development... | In development... |
LT Nav | Docs | In development... | In development... |
Private Streams
Name | Documentation | Function Call | Example |
---|---|---|---|
Position | Docs | In development... | In development... |
Execution | Docs | In development... | In development... |
Fast Execution | Docs | In development... | In development... |
Order | Docs | In development... | In development... |
Wallet | Docs | In development... | In development... |
Greek | Docs | In development... | In development... |
🛠 Installation
composer require carpenstar/bybitapi-sdk-websockets-v5
Requirements:
- PHP ≥ 7.4
posix
extensionpcntl
extension
🚀 Basic Guide
1. Establishing Connection
// bybit-kline.php use Carpenstar\ByBitAPI\BybitAPI; require_once('vendor/autoload.php'); $websocket = (new BybitAPI()) ->setCredentials('ws://stream.bybit.com/v5') ->websockets();
2. Subscribing to Data Stream (Kline Example)
use Carpenstar\ByBitAPI\Core\Enums\WebSocketsIntervalEnum; use Carpenstar\ByBitAPI\Core\Objects\WebSockets\Channels\DefaultCallbackHandler; $websocket->klinePerpetual( ['BTCUSDT'], // Trading instruments WebSocketsIntervalEnum::KLINE_1_MINUTE, // Interval new DefaultCallbackHandler() // Message handler );
3. Message Handler
Example handler (recommended for testing):
namespace Carpenstar\ByBitAPI\Core\Objects\WebSockets\Channels; class DefaultCallbackHandler extends ChannelHandler { public function apiExceptionHandler(ExceptionResponse $dtoMessage, TcpConnection $connection): void { throw new ApiException($dtoMessage->getReturnMessage()); } public function connectionHandle(WebSocketConnectionResponse $message, TcpConnection $connection): void { var_dump($message); } public function handle(IResponseDataInterface $message, TcpConnection $connection): void { var_dump($message); } }
4. Starting Connection
use Carpenstar\ByBitAPI\BybitAPI; use Carpenstar\ByBitAPI\Core\Objects\WebSockets\Channels\DefaultCallbackHandler; use Carpenstar\ByBitAPI\Core\Enums\WebSocketsIntervalEnum; require_once('vendor/autoload.php'); (new BybitAPI()) ->setCredentials('ws://stream.bybit.com/v5') ->websockets() ->klinePerpetual(['BTCUSDT'], WebSocketsIntervalEnum::KLINE_1_MINUTE, new DefaultCallbackHandler()) ->execute(); // Initiate connection to the data stream
5. Running the Script:
php ./bybit-kline.php start
🎯 Successful Connection Example
JohnDoe@0b9374c43827:/var/www/html# php bybit-kline.php start Workerman[index.php] start in DEBUG mode -------------------------------------------- WORKERMAN -------------------------------------------- Workerman version:4.1.15 PHP version:7.4.33 Event-Loop:\Workerman\Events\Select --------------------------------------------- WORKERS --------------------------------------------- proto user worker listen processes status tcp root none none 1 [OK] --------------------------------------------------------------------------------------------------- Press Ctrl+C to stop. Start success. object(Carpenstar\ByBitAPI\WebSocketsV5\PublicStream\Kline\Message\KlineMessage)#13 (4) { ["topic"]=> string(15) "kline.1.BTCUSDT" ["type"]=> string(8) "snapshot" ["timestamp"]=> object(DateTime)#15 (3) { ["date"]=> string(26) "2025-04-11 18:21:04.000000" ["timezone_type"]=> int(3) ["timezone"]=> string(3) "UTC" } ["data"]=> object(Carpenstar\ByBitAPI\Core\Objects\Collection\EntityCollection)#14 (1) { ["collection":protected]=> array(1) { [0]=> object(Carpenstar\ByBitAPI\WebSocketsV5\PublicStream\Kline\Message\KlineItemMessage)#17 (11) { ["start"]=> object(DateTime)#18 (3) { ["date"]=> string(26) "2025-04-11 18:21:00.000000" ["timezone_type"]=> int(3) ["timezone"]=> string(3) "UTC" } ["end"]=> object(DateTime)#19 (3) { ["date"]=> string(26) "2025-04-11 18:21:59.000000" ["timezone_type"]=> int(3) ["timezone"]=> string(3) "UTC" } ["interval"]=> string(1) "1" ["open"]=> float(83734.1) ["close"]=> float(83708.7) ["high"]=> float(83734.1) ["low"]=> float(83708.7) ["volume"]=> float(19.33) ["turnover"]=> float(1618253.6326) ["isConfirm"]=> bool(false) ["timestamp"]=> object(DateTime)#20 (3) { ["date"]=> string(26) "2025-04-11 18:21:04.000000" ["timezone_type"]=> int(3) ["timezone"]=> string(3) "UTC" } } } } } object(Carpenstar\ByBitAPI\Core\Objects\WebSockets\Entity\WebSocketConnectionResponse)#13 (5) { ["success":"Carpenstar\ByBitAPI\Core\Objects\WebSockets\Entity\WebSocketConnectionResponse":private]=> bool(true) ["returnMessage":"Carpenstar\ByBitAPI\Core\Objects\WebSockets\Entity\WebSocketConnectionResponse":private]=> string(0) "" ["connectionId":"Carpenstar\ByBitAPI\Core\Objects\WebSockets\Entity\WebSocketConnectionResponse":private]=> string(36) "55f0974c-0e78-4f93-8a30-d2ce115d9da7" ["reqId":"Carpenstar\ByBitAPI\Core\Objects\WebSockets\Entity\WebSocketConnectionResponse":private]=> string(0) "" ["operation":"Carpenstar\ByBitAPI\Core\Objects\WebSockets\Entity\WebSocketConnectionResponse":private]=> string(9) "subscribe" }
❓ Support
For any issues: Create a GitHub Issue or contact me on Telegram: @novisad0189 (please include "BybitSDK" in your first message)