ADONISJS를위한 기본 서버 ent-Event (SSE) 모듈.
ADONISJS Transmit은 ADONISJS를위한 기본 서버 ent-Event (SSE) 모듈입니다. 클라이언트에게 이벤트를 보내는 간단한 API를 제공합니다. 또한 여러 서버 또는 인스턴스로 이벤트를 방송하기위한 전송 계층으로 Redis를 지원합니다.
이 모듈을 사용하기 전에 알아야 할 몇 가지 사항은 다음과 같습니다.
단방향 통신 : 데이터 전송은 다른 방식이 아니라 서버에서 클라이언트로만 발생합니다.
텍스트 데이터 전용 : SSE는 텍스트 데이터의 전송 만 지원하고 이진 데이터를 보낼 수 없습니다.
HTTP 프로토콜 : 사용 된 기본 프로토콜은 특수 또는 독점 프로토콜이 아닌 일반적인 HTTP입니다.
설치
용법
채널
채널 이름
채널 승인
동기화
핑
이벤트
다음과 같이 NPM 레지스트리에서 패키지를 설치하십시오.
Node Ace add @adonisjs/transmit
이 모듈은 transmit
인스턴스를 노출 시키는데, 이는 클라이언트에게 이벤트를 보내는 데 사용할 수 있습니다.
'@adonisjs/transmit/services/main'// codetransmit.broadcast ( 'channelname', {username : 'lanz'})에서 가져 오는 가져 오기
채널은 이벤트를 그룹화하는 방법입니다. 예를 들어, users
및 posts
용 채널을 가질 수 있습니다. 클라이언트는 하나 이상의 채널을 구독하여 이벤트를받을 수 있습니다.
채널 이름은 문자열이어야하며 /
제외한 특수 문자를 포함해서는 안됩니다. 다음은 유효한 채널 이름입니다.
Transmit.broadcast ( '사용자', {username : 'lanz'}) transmit.broadcast ( 'users/1', {username : 'lanz'}) transmit.broadcast ( 'users/1/posts', {username : ' Lanz '})
채널을 비공개로 표시 한 다음 클라이언트가 구독하도록 승인 할 수 있습니다. 승인은 콜백 함수를 사용하여 수행됩니다.
// START/Transmit.Timport 유형 {httpcontext} from '@adonisjs/core/http'transmit.authorize <{user/: id', (ctx : httpcontext, {id}) => { ctx.auth.user를 반환합니까? .id === +id})
메모
adonisrc.ts
파일의 preloads
배열 내부에서 start/transmit.ts
파일을 추가하는 것을 잊지 마십시오.
클라이언트가 개인 채널을 구독하려고하면 채널 매개 변수 및 HTTP 컨텍스트로 콜백 함수가 호출됩니다. 콜백 함수는 구독을 허용하거나 허용하지 않기 위해 부울 값을 반환해야합니다.
전송은 전송 레이어를 사용하여 여러 서버 또는 인스턴스에서 동기화 이벤트를 지원합니다. 구성을 변경하고 드라이버를 참조하여 동기화를 활성화 할 수 있습니다 (현재 Redis 만 사용할 수 있음).
// config/transmit.tsimport env '#start/env'import {defineconfig} from'@adonisjs/transmit'import {redis} from '@adonisjs/transmit/transport'export defuleconfig ({ 전송 : {드라이버 : redis ({host : env.get ( 'redis_host'), port : env.get ( 'redis_port'), password : env.get ( 'redis_password'),}) }})
메모
redis
드라이버를 사용할 때 ioredis
설치해야합니다.
전송은 지원을 유지하기 위해 클라이언트를 핑 핑을 지원합니다. 구성을 변경하여 핑을 활성화 할 수 있습니다.
// config/transmit.timport {defineconfig} from '@adonisjs/transmit'import {redis}'from '@adonisjs/transmit/ranstall export defuleconfig ({{ PingInterval : '1m',})
전송은 라이프 사이클 이벤트를 방출하기 위해 이미 터를 사용합니다. on
메소드를 사용하여 이벤트를들을 수 있습니다.
송신 .on ( 'connect', ({uid}) => { console.log (`connected : $ {uid}`)}) 송신 .on ( 'Distroncent', ({uid}) => { console.log (`연결이 끊어졌습니다 : $ {uid}`)}) transmit.on ( 'broadcast', ({channel}) => { console.log (```채널로 브로드 캐스트 $ {채널}`)}) transmit.on ( 'subscribe', ({uid, channel}) => { console.log (`구독 $ {uid} to $ {channel}`)}) 송신 .on ( 'Unbscribe', ({uid, channel}) => { console.log (`$ {channel}`)}에서`````{uid}를 구독하지 않은 $ {uid})