Warudo란 무엇인가?
Warudo는 3D VTuber 라이브 스트리밍을 위해 특별히 설계된 아바타 애니메이션 소프트웨어다. Warudo는 WebSocket을 통해 실시간으로 데이터를 주고받을 수 있는 시스템인데, 주로 실시간 통신이 필요한 애플리케이션에서 사용되며 빠르고 효율적인 데이터 전송을 지원한다. 특히 대화형 애플리케이션이나 실시간 업데이트가 필요한 시스템에서 유용하게 사용될 수 있다.
왜 Warudo여야 하는가?
Warudo는 캐주얼 사용자와 전문 사용자 모두를 위해 설계된 종합적이고 기능이 풍부한 3D VTubing 소프트웨어로써, 다양한 모션 캡쳐 시스템을 지원하므로 집에서 스트리밍하거나 전문 모션 캡처 스튜디오에서도 사용할 수 있다. 또한, 500개 이상의 기본 애니메이션으로 캐릭터를 포즈를 취할 수 있게 하거나, 라이브 스트리밍 플랫폼과 통합, 노드 기반의 시각적 스크립팅 시스템 등 다양한 기능을 제공하고 있다. 그 외에도, 커스터마이징이 가능하고 Unity와 호환되는 3D 에셋을 가져올 수 있는 Mod SDK와 맞춤 기능을 개발하고자 하는 사용자들을 위한 C# scripting SDK를 제공해서 사용자와 개발자 모두에게 매우 유용하다.
장점
- 실시간 통신: WebSocket을 사용하여 클라이언트와 서버 간의 실시간 양방향 통신을 지원.
- 효율성: HTTP와 달리 지속적인 연결을 유지하여 데이터 전송 시 오버헤드를 줄인다.
- 확장성: 다양한 애플리케이션에 쉽게 통합할 수 있으며, 실시간 데이터 전송이 필요한 다양한 시나리오에 적용 가능.
사용 방법
WebSocket 연결 설정
private connectWebSocket() {
this.webSocket = new WebSocket('ws://127.0.0.1:19190');
this.webSocket.on('open', () => {
console.log('WebSocket connection opened.');
this.isReconnecting = false;
});
}
connectWebSocket 메서드를 사용하여 WebSocket 서버에 연결한다. warudo는 기본적으로 19190 포트를 사용하고, warudo에서 포트를 변경할 수 있다. 서버에 연결이 성공하면 "WebSocket connection opened."라는 로그가 출력되는데, 이는 연결이 성공적으로 이루어졌음을 나타낸다.
연결 상태 관리
this.webSocket.on('close', (code, reason) => {
console.warn(`WebSocket closed: ${code} - ${reason}`);
console.log('Attempting to reconnect...');
this.attemptReconnect();
});
this.webSocket.on('error', (error) => {
console.error('WebSocket error:', error);
console.log('Attempting to reconnect due to error...');
this.attemptReconnect();
});
연결이 끊어지면 "Attempting to reconnect..."라는 로그가 출력되며, attemptReconnect 메서드를 통해 일정 시간 후에 재연결을 시도한다.
메시지 전송
sendMessageToWarudo 메서드를 사용하여 Warudo로 메시지를 전송한다. WebSocket 연결이 열려 있는 경우에만 메시지를 전송할 수 있다.
sendMessageToWarudo(message: string) {
if (this.webSocket && this.webSocket.readyState === WebSocket.OPEN) {
console.log('WebSocket is open. Sending message:', message);
this.webSocket.send(message, (err) => {
if (err) {
console.error('Error sending message to Warudo:', err);
}
});
} else {
console.error('WebSocket is not open. Cannot send message.');
}
}
메시지를 전송할 때 "WebSocket is open. Sending message:"라는 로그가 출력된다. 만약 연결이 열려 있지 않다면 "WebSocket is not open. Cannot send message."라는 오류 로그가 출력된다.
디버깅 및 오류 처리
연결 상태와 메시지 전송 상태를 로그로 출력하여 디버깅을 용이하게 한다. 오류 발생 시 자동으로 재연결을 시도하여 안정성을 높인다. 만약 오류가 발생하면 "WebSocket error:"라는 로그가 출력되며, 자동으로 재연결을 시도하게 된다. 이러한 기능을 통해 Warudo는 실시간 통신이 필요한 다양한 애플리케이션에서 유용하게 사용될 수 있다.
이후 포스팅에서 챗봇과 연결하여 warudo가 어떻게 동작하는지 살펴보자!!!
참고)
https://docs.warudo.app/ko/docs
Warudo 소개 | Warudo Handbook
Warudo란 무엇인가요?
docs.warudo.app

'Side Projects' 카테고리의 다른 글
NestJS로 만드는 AI챗봇 (Feat. warudo) (0) | 2025.03.29 |
---|---|
Node.js에서 OAuth 2.0으로 소셜 로그인 구현하기 (0) | 2025.03.10 |
Node.js로 구현하는 AI 챗봇 비교 분석: Gemini vs Grok vs OpenAI (0) | 2025.03.05 |
체스말 이동하기 로직 (0) | 2025.02.21 |
채팅 시스템 성능 향상시키기 (0) | 2025.02.18 |