일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- GPT3.5
- Github
- nodejs
- chatGPTAPI
- 웹소켓연결끊김
- aws
- 클라우드
- javascript
- Express
- 패키지설치에러
- 버킷생성
- Database
- gpt3.5turbo
- java
- db
- 자바
- 웹소켓연결
- ChatGPT
- iam사용자
- nvmrc
- 클래스
- class
- 웹소켓재시작
- 호스팅영역
- 노드버전
- git
- aiapi
- gptapi
- gitlab
- openaiapi
Archives
- Today
- Total
IT's Jenna
websocket : 끊겼을때 재시작 하기 (node.js / twelvedata) 본문
최근에 주식 관련 프로젝트를 진행 중입니다. 이후 포스팅에서 관련해서 자세히 다루도록 하겠습니다 :)
주식 데이터는 twelvedata라는 곳에서 실시간으로 받아와야 하기 때문에 websocket을 통해서 데이터를 받아옵니다.
서버와 twelvedata를 websocket으로 연결시켜 두면 여러 이유들로 인해 websocket이 끊기는 현상이 발생하게 됩니다.
하지만 실시간 주식 정보를 받아와야하는 app에서 연결이 끊겨서 데이터를 받아오지 못한다면 큰 문제가 되겠죠?
따라서 websocket 연결이 끊기더라도 다시 자동으로 재연결 되도록 코드 작업을 해두었습니다.
function twelveDataConnect(){
const webSocket = new WebSocket(`wss://ws.twelvedata.com/v1/quotes/price?apikey=${config.key}`)
webSocket.onopen = async () => {
console.log('connection good')
const body = JSON.stringify({
action: 'subscribe',
params: {
symbols: Symbols
}
})
webSocket.send(body)
webSocket.onmessage = async (e) => {
// console.log('message', e)
// console.log('data', e.data)
const data = JSON.parse(e.data)
...
const interval = setInterval(() => {
const heartbeat = JSON.stringify({
action: 'heartbeat'
})
webSocket.send(heartbeat)
}, 10000)
}
webSocket.onclose = async (e) => {
console.log('Socket is closed. Reconnect will be attempted in 1 second.', e);
setTimeout(function() {
twelveDataConnect();
}, 1000);
}
}
twelveDataConnect()
웹소켓 연결부터 연결된 후의 모든 동작을 twelveDataConnect() 라는 하나의 함수 내에 넣어두고 해당 함수를 실행합니다.
웹소켓이 onclose되는 시점에 setTimeout을 걸어서 종료 1초 후에 다시 웹소켓을 연결하도록 해두면 상용 서버에서 혹시나 웹소켓 연결이 끊기더라도 다시 재연결할 수 있습니다.
참조
https://stackoverflow.com/questions/22431751/websocket-how-to-automatically-reconnect-after-it-dies
'Backend > 외부 API 활용' 카테고리의 다른 글
Node.js로 GPT API를 활용한 번역 서비스 구현 (1) | 2024.06.04 |
---|---|
알리고를 통한 카카오 알림톡 보내기 (0) | 2021.10.04 |
알리고를 통한 문자 보내기 (1) | 2021.10.04 |
Comments