Adapters

Adapters

WebSockets 모듈은 플랫폼에 구애받지 않으므로 WebSocketAdapter 인터페이스를 사용하여 자신의 라이브러리 (또는 기본 구현)를 가져올 수 있습니다. 이 인터페이스는 다음 표에 설명된 몇가지 메소드를 강제로 구현합니다.

create

전달된 인수를 기반으로 소켓 인스턴스를 만듭니다.

bindClientConnect

클라이언트 연결 이벤트를 바인드

bindClientDisconnect

클라이언트 연결 끊기 이벤트를 바인드합니다 (선택 사항 *).

bindMessageHandlers

들어오는 메시지를 해당 메시지 처리기에 바인딩

close

서버 인스턴스를 종료합니다

Extend socket.io

socket.ioarrow-up-right 패키지는 IoAdapter 클래스에 싸여 있습니다. 어댑터의 기본 기능을 향상 시키려면 어떻게합니까? 예를 들어, 기술 요구 사항에는 웹 서비스의 여러 부하 분산 인스턴스에서 이벤트를 브로드 캐스트하는 기능이 필요합니다. 이를 위해 IoAdapter를 확장하고 새로운 socket.io 서버를 인스턴스화하는 단일 방법을 재 정의합니다. 그러나 먼저 필요한 패키지를 설치하십시오.

$ npm i --save socket.io-redis

패키지가 설치되면 RedisIoAdapter클래스를 만들 수 있습니다.

import { IoAdapter } from '@nestjs/platform-socket.io';
import * as redisIoAdapter from 'socket.io-redis';

const redisAdapter = redisIoAdapter({ host: 'localhost', port: 6379 });

export class RedisIoAdapter extends IoAdapter {
  createIOServer(port: number, options?: any): any {
    const server = super.createIOServer(port, options);
    server.adapter(redisAdapter);
    return server;
  }
}

그런 다음 새로 생성된 Redis 어댑터로 전환하면됩니다.

Ws library

사용 가능한 또 다른 어댑터는 WsAdapter인데, 이는 차례로 프레임 워크 사이의 프록시처럼 작동하며 빠르고 철저하게 테스트 된 wsarrow-up-right 라이브러리를 통합합니다. 이 어댑터는 기본 브라우저 WebSocket과 완벽하게 호환되며 socket.io 패키지보다 훨씬 빠릅니다. 불행히도, 즉시 사용할 수 있는 기능이 훨씬 더 적습니다. 경우에 따라 꼭 필요한 것은 아닙니다.

ws를 사용하기 위해서는 먼저 필요한 패키지를 설치해야합니다 :

패키지가 설치되면 어댑터를 전환할 수 있습니다.

info 힌트 WsAdapter@nestjs/platform-ws에서 가져옵니다.

Advanced (custom adapter)

데모 목적으로 wsarrow-up-right 라이브러리를 수동으로 통합하려고 합니다. 언급한 바와 같이 이 라이브러리의 어댑터는 이미 작성되었으며 @nestjs/platform-ws 패키지에서 WsAdapter 클래스로 가져옵니다. 단순화된 구현은 다음과 같이 보일 수 있습니다.

info 힌트 wsarrow-up-right 라이브러리를 활용하려면 자체 라이브러리를 작성하는 대신 내장WsAdapter를 사용하십시오.

그런 다음 useWebSocketAdapter()메소드를 사용하여 사용자 정의 어댑터를 설정할 수 있습니다.

Example

WsAdapter를 사용하는 실제 예제는 여기arrow-up-right에 있습니다.

Last updated