WebSockets 모듈은 플랫폼에 구애받지 않으므로 WebSocketAdapter 인터페이스를 사용하여 자신의 라이브러리 (또는 기본 구현)를 가져올 수 있습니다. 이 인터페이스는 다음 표에 설명된 몇가지 메소드를 강제로 구현합니다.
create
전달된 인수를 기반으로 소켓 인스턴스를 만듭니다.
bindClientConnect
클라이언트 연결 이벤트를 바인드
bindClientDisconnect
클라이언트 연결 끊기 이벤트를 바인드합니다 (선택 사항 *).
bindMessageHandlers
들어오는 메시지를 해당 메시지 처리기에 바인딩
close
서버 인스턴스를 종료합니다
Extend socket.io
socket.io 패키지는 IoAdapter 클래스에 싸여 있습니다. 어댑터의 기본 기능을 향상 시키려면 어떻게합니까? 예를 들어, 기술 요구 사항에는 웹 서비스의 여러 부하 분산 인스턴스에서 이벤트를 브로드 캐스트하는 기능이 필요합니다. 이를 위해 IoAdapter를 확장하고 새로운 socket.io 서버를 인스턴스화하는 단일 방법을 재 정의합니다. 그러나 먼저 필요한 패키지를 설치하십시오.
사용 가능한 또 다른 어댑터는 WsAdapter인데, 이는 차례로 프레임 워크 사이의 프록시처럼 작동하며 빠르고 철저하게 테스트 된 ws 라이브러리를 통합합니다. 이 어댑터는 기본 브라우저 WebSocket과 완벽하게 호환되며 socket.io 패키지보다 훨씬 빠릅니다. 불행히도, 즉시 사용할 수 있는 기능이 훨씬 더 적습니다. 경우에 따라 꼭 필요한 것은 아닙니다.
ws를 사용하기 위해서는 먼저 필요한 패키지를 설치해야합니다 :
패키지가 설치되면 어댑터를 전환할 수 있습니다.
info 힌트WsAdapter는@nestjs/platform-ws에서 가져옵니다.
Advanced (custom adapter)
데모 목적으로 ws 라이브러리를 수동으로 통합하려고 합니다. 언급한 바와 같이 이 라이브러리의 어댑터는 이미 작성되었으며 @nestjs/platform-ws 패키지에서 WsAdapter 클래스로 가져옵니다. 단순화된 구현은 다음과 같이 보일 수 있습니다.
info 힌트ws 라이브러리를 활용하려면 자체 라이브러리를 작성하는 대신 내장WsAdapter를 사용하십시오.
그런 다음 useWebSocketAdapter()메소드를 사용하여 사용자 정의 어댑터를 설정할 수 있습니다.