Ping.make()

Метод для измерения скорости ответа REST API Bitrix24. Выполняет тестовый запрос и возвращает время ответа в миллисекундах.

Обзор

Используйте Ping.make() для измерения времени ответа REST API Bitrix24. Метод возвращает Promise с числовым значением времени ответа в миллисекундах.

// Базовое использование
const responseTime = await $b24.tools.ping.make()

if (responseTime >= 0) {
  console.log(`API response time: ${responseTime}ms`)
} else {
  console.error('Failed to measure API response time')
}

Сигнатура метода

make(
  options?: { requestId?: string }
): Promise<number>

Параметры

ПараметрТипОбязательныйОписание
requestIdstringНетУникальный идентификатор запроса для отслеживания. Используется для дедупликации запросов и отладки.

Возвращаемое значение

Promise<number> — promise, который разрешается числовым значением:

  • Положительное число — время ответа в миллисекундах от отправки запроса до получения ответа.
  • -1 — в случае ошибки или таймаута.

Обработка ошибок

Ping.make() никогда не выбрасывает исключений. Сетевые сбои, HTTP-ошибки, неверные учётные данные и таймауты — всё проглатывается внутри и возвращается как -1. Со стороны вызова нет способа различить виды сбоев — для этого используйте HealthCheck.make() или вызывайте нижележащий метод напрямую через CallV2.make() и проверяйте AjaxResult.

Примеры

Измерение времени ответа

import { B24Hook, LoggerFactory } from '@bitrix24/b24jssdk'

const devMode = typeof import.meta !== 'undefined' && (import.meta?.dev || globalThis._importMeta_.env?.DEV)
const $logger = LoggerFactory.createForBrowser('Example:ping', devMode)
const $b24 = B24Hook.fromWebhookUrl('https://your_domain.bitrix24.com/rest/1/webhook_code/')

async function measureApiResponseTime(): Promise<number> {
  try {
    return await $b24.tools.ping.make({
      requestId: `unique-request-id`
    })
  } catch (error) {
    $logger.error('Ping failed unexpectedly', { error })
    return -1
  }
}

// Usage
try {
  const responseTime = await measureApiResponseTime()

  if (responseTime >= 0) {
    // Response time classification
    let status = 'optimal'
    if (responseTime > 1000) status = 'slow'
    if (responseTime > 3000) status = 'very_slow'
    if (responseTime > 10000) status = 'critical'

    $logger.info(`API response time: ${responseTime}ms (${status})`, {
      responseTime,
      status,
      threshold: 'Optimal < 1000ms'
    })
  } else {
    $logger.error('Failed to measure API response time')
  }
} catch (error) {
  $logger.error('Error measuring response time', { error })
}

Альтернативы и рекомендации

  • Для проверки доступности: используйте HealthCheck.
  • Для измерения производительности операций: выполняйте замеры времени для конкретных методов API.
  • На клиентской стороне (браузер): используйте встроенный объект B24Frame.