메인 콘텐츠로 건너뛰기

Documentation Index

Fetch the complete documentation index at: https://injectivelabs-mintlify-jp-developers-first-half-1777019423.mintlify.app/llms.txt

Use this file to discover all available pages before exploring further.

StreamManagerV2를 사용하여 Indexer에서 파생상품 마켓 모듈 관련 데이터를 스트리밍하는 예제 코드 스니펫입니다.

StreamManagerV2를 사용한 gRPC 스트림

오더북 업데이트 스트림

import { getNetworkEndpoints, Network } from '@injectivelabs/networks'
import { 
  StreamManagerV2,
  IndexerGrpcDerivativesStreamV2 
} from '@injectivelabs/sdk-ts/client/indexer'

const endpoints = getNetworkEndpoints(Network.Testnet)
const stream = new IndexerGrpcDerivativesStreamV2(endpoints.indexer)

const streamManager = new StreamManagerV2({
  id: 'derivatives-orderbook-updates',
  streamFactory: () => stream.streamOrderbookUpdates({ 
    marketIds: ['0x...'],
    callback: (response) => {
      streamManager.emit('data', response)
    }
  }),
  onData: (orderbookUpdates) => {
    console.log(orderbookUpdates)
  },
  retryConfig: { enabled: true }
})

streamManager.on('connect', () => console.log('스트림 연결됨'))
streamManager.start()

파생상품 주문 스트림

import { getNetworkEndpoints, Network } from '@injectivelabs/networks'
import { OrderSide } from '@injectivelabs/sdk-ts/types'
import { 
  StreamManagerV2,
  IndexerGrpcDerivativesStreamV2 
} from '@injectivelabs/sdk-ts/client/indexer'

const endpoints = getNetworkEndpoints(Network.Testnet)
const stream = new IndexerGrpcDerivativesStreamV2(endpoints.indexer)

const streamManager = new StreamManagerV2({
  id: 'derivatives-orders',
  streamFactory: () => stream.streamOrders({
    marketId: '0x...',
    subaccountId: '0x...', // 선택적
    orderSide: OrderSide.Buy, // 선택적
    callback: (response) => {
      streamManager.emit('data', response)
    }
  }),
  onData: (orders) => {
    console.log(orders)
  },
  retryConfig: { enabled: true }
})

streamManager.on('connect', () => console.log('스트림 연결됨'))
streamManager.start()

파생상품 거래 스트림

import { getNetworkEndpoints, Network } from '@injectivelabs/networks'
import { TradeDirection } from '@injectivelabs/sdk-ts/types'
import { 
  StreamManagerV2,
  IndexerGrpcDerivativesStreamV2 
} from '@injectivelabs/sdk-ts/client/indexer'

const endpoints = getNetworkEndpoints(Network.Testnet)
const stream = new IndexerGrpcDerivativesStreamV2(endpoints.indexer)

const streamManager = new StreamManagerV2({
  id: 'derivatives-trades',
  streamFactory: () => stream.streamTrades({
    marketIds: ['0x...'], // 선택적
    subaccountId: '0x...', // 선택적
    direction: TradeDirection.Buy, // 선택적
    callback: (response) => {
      streamManager.emit('data', response)
    }
  }),
  onData: (trades) => {
    console.log(trades)
  },
  retryConfig: { enabled: true }
})

streamManager.on('connect', () => console.log('스트림 연결됨'))
streamManager.start()

파생상품 포지션 스트림

import { getNetworkEndpoints, Network } from '@injectivelabs/networks'
import { 
  StreamManagerV2,
  IndexerGrpcDerivativesStreamV2 
} from '@injectivelabs/sdk-ts/client/indexer'

const endpoints = getNetworkEndpoints(Network.Testnet)
const stream = new IndexerGrpcDerivativesStreamV2(endpoints.indexer)

const streamManager = new StreamManagerV2({
  id: 'derivatives-positions',
  streamFactory: () => stream.streamPositions({
    marketId: '0x...', // 선택적
    subaccountId: '0x...', // 선택적
    callback: (response) => {
      streamManager.emit('data', response)
    }
  }),
  onData: (positions) => {
    console.log(positions)
  },
  retryConfig: { enabled: true }
})

streamManager.on('connect', () => console.log('스트림 연결됨'))
streamManager.start()
Last modified on April 24, 2026