Files
bybit-api/doc/websocket-client.md
2019-09-16 14:37:19 +02:00

5.2 KiB

Websocket API

Class: WebsocketClient

The WebsocketClient inherits from EventEmitter. After establishing a connection, the client sends heartbeats in regular intervalls, and reconnects to the server once connection has been lost.

new WebsocketClient([options][, logger])

  • options {Object} Configuration options

    • key {String} Bybit API Key. Only needed if private topics are subscribed
    • secret {String} Bybit private Key. Only needed if private topics are subscribed
    • livenet {Bool} Weather to connect to livenet (true). Default false.
    • pingInterval {Integer} Interval in ms for heartbeat ping. Default: 10000,
    • pongTimeout {Integer} Timeout in ms waiting for heartbeat pong response from server. Default: 1000,
    • reconnectTimeout {Integer} Timeout in ms the client waits before trying to reconnect after a lost connection. Default: 500
  • logger {Object} Optional custom logger

    Custom logger must contain the following methods:

    const logger = {
      debug: function(message, data) {}
      notice: function(message, data) {}
      info: function(message, data) {}
      warning: function(message, data) {}
      error: function(message, data) {},
    }
    

ws.subscribe(topics)

  • topics {String|Array} Single topic as string or multiple topics as array of strings. Subscribe to one or multiple topics. See available topics

ws.unsubscribe(topics)

  • topics {String|Array} Single topic as string or multiple topics as array of strings. Unsubscribe from one or multiple topics.

ws.close()

Close the connection to the server.

Event: 'open'

Emmited when the connection has been opened.

Event: 'update'

  • message {Object}
    • topic {String} the topic for which the update occured
    • data {Array|Object} updated data (see docs for each topic).
    • type {String} Some topics might have different update types (see docs for each topic).

Emmited whenever an update to a subscribed topic occurs.

Event: 'response'

  • response {Object}
    • success {Bool}
    • ret_msg {String} empty if operation was successfull, otherwise error message.
    • conn_id {String} connection id
    • request {Object} Original request, to which the response belongs
      • op {String} operation
      • args {Array} Request Arguments

Emited when the server responds to an operation sent by the client (usually after subscribing to a topic).

Event: 'close'

Emitted when the connection has been closed.

Event: 'error'

  • error {Error}

Emitted when an error occurs.

Available Topics

Generaly all topics as described in the official bybit api documentation are available.

Private topics

Positions of your account

All positions of your account. Topic: position

See bybit documentation

Execution message

Execution message, whenever an order has been (partially) filled. Topic: execution

See bybit documentation

Update for your orders

Updates for your active orders Topic: order

See bybit documentation

Public topics

Candlestick chart

Candlestick OHLC "candles" for selected symbol and interval. Example topic: kline.BTCUSD.1m

See bybit documentation

Real-time trading information

All trades as they occur. Topic: trade

See bybit documentation

Daily insurance fund update

Topic: insurance

See bybit documentation

OrderBook of 25 depth per side

OrderBook for selected symbol Example topic: orderBookL2_25.BTCUSD

See bybit documentation

Latest information for symbol

LAtest information for selected symbol Example topic: instrument_info.100ms.BTCUSD

See bybit documentation

Example

const {WebsocketClient} = require('@pxtrn/bybit-api');

const API_KEY = 'xxx';
const PRIVATE_KEY = 'yyy';

const ws = new WebsocketClient({key: API_KEY, secret: PRIVATE_KEY});

ws.on('open', function() {
  ws.subscribe(['position', 'execution', 'trade']);
  ws.subscribe('kline.BTCUSD.1m');
});

ws.on('update', function(message) {
  console.log('update', message);
});

ws.on('response', function(response) {
  console.log('response', response);
});

ws.on('close', function() {
  console.log('connection closed');
});

ws.on('error', function(err) {
  console.error('ERR', err);
});