From 74cb01e980e0abd7930a3afff07c3628f021e4ce Mon Sep 17 00:00:00 2001 From: SeungGwa123 Date: Thu, 28 Nov 2024 16:54:50 +0900 Subject: [PATCH] test --- nginx.conf | 24 ------------------- packages/server/src/upbit/SSE/sse.service.ts | 24 +++++++++++++++++++ packages/server/src/upbit/upbit.controller.ts | 10 +++++++- 3 files changed, 33 insertions(+), 25 deletions(-) diff --git a/nginx.conf b/nginx.conf index ec1de342..4f087676 100644 --- a/nginx.conf +++ b/nginx.conf @@ -33,30 +33,6 @@ http { try_files $uri $uri/ /index.html; } - location /api/upbit/orderbook { - proxy_pass http://api_servers; - - proxy_http_version 1.1; - proxy_set_header Connection ''; - proxy_buffering off; - - proxy_connect_timeout 10s; - proxy_send_timeout 10s; - proxy_read_timeout 60s; - } - - location /api/upbit/price-updates { - proxy_pass http://api_servers; - - proxy_http_version 1.1; - proxy_set_header Connection ''; - proxy_buffering off; - - proxy_connect_timeout 10s; - proxy_send_timeout 10s; - proxy_read_timeout 60s; - } - location /api { proxy_pass http://api_servers; proxy_next_upstream error timeout http_500 http_502 http_503 http_504; diff --git a/packages/server/src/upbit/SSE/sse.service.ts b/packages/server/src/upbit/SSE/sse.service.ts index 2eb11fa7..6207715e 100644 --- a/packages/server/src/upbit/SSE/sse.service.ts +++ b/packages/server/src/upbit/SSE/sse.service.ts @@ -44,6 +44,30 @@ export class SseService implements OnModuleDestroy { return coinData; } + async initOrderStream( + coin: string[], + dto: (data: any) => any, + ): Promise { + let coinLatestInfo = this.coinDataUpdaterService.getCoinOrderbookInfo(); + + while (!coinLatestInfo.size || !coinLatestInfo.get(coin)) { + await new Promise((resolve) => setTimeout(resolve, 100)); + coinLatestInfo = this.coinDataUpdaterService.getCoinLatestInfo(); + } + + const initData = coinLatestInfo.get(coin); + initData.type = "orderbook" + initData.stream_type = "REALTIME" + initData.code = initData.market; + + const dtoData = dto(initData) + delete dtoData.market; + + return new MessageEvent('orderbook-update', { + data: JSON.stringify(dtoData), + }); + } + getUpdatesStream( type: 'price' | 'orderbook', coins: string[], diff --git a/packages/server/src/upbit/upbit.controller.ts b/packages/server/src/upbit/upbit.controller.ts index d748e782..d6d599d4 100644 --- a/packages/server/src/upbit/upbit.controller.ts +++ b/packages/server/src/upbit/upbit.controller.ts @@ -122,12 +122,20 @@ export class UpbitController { @Query('coins') coinsQuery?: string[], ): Observable { const coins = this.parseCoins(coinsQuery); + + const initData$ = from( + this.sseService.initOrderStream( + coinsQuery, + this.coinListService.convertToOrderbookDto, + ), + ) - return this.sseService.getUpdatesStream( + const updatesStream = this.sseService.getUpdatesStream( 'orderbook', coins, this.coinListService.convertToOrderbookDto, ); + return concat(initData$, updatesStream) } @ApiOperation({