Adonisjs用のネイティブサーバーセントイベント(SSE)モジュール。
Adonisjs送信は、Adonisjsのネイティブサーバーセントイベント(SSE)モジュールです。イベントをクライアントに送信する簡単なAPIを提供します。また、複数のサーバーまたはインスタンスにブロードキャストイベントのためのトランスポートレイヤーとしてRedisをサポートしています。
このモジュールを使用する前に知っておくべきことがいくつかあります。
単方向通信:データ送信は、サーバーからクライアントへのみ発生しますが、その逆ではありません。
テキストデータのみ: SSEはテキストデータの送信のみをサポートしています。バイナリデータは送信できません。
HTTPプロトコル:使用される基礎となるプロトコルは、通常のHTTPであり、特別または独自のプロトコルではありません。
インストール
使用法
チャネル
チャネル名
チャネル承認
同期
ping
イベント
次のように、NPMレジストリからパッケージをインストールします。
node ace add @adonisjs/送信
モジュールは、クライアントにイベントを送信するために使用できるtransmitインスタンスを公開します。
'@adonisjs/srunsmit/services/main'から送信をインポート// codetransmit.broadcast( 'channelname'、{username: 'lanz'})の任意の任意の場所チャネルは、イベントをグループ化する方法です。たとえば、 users用のチャネルやposts用のチャンネルを作成できます。クライアントは、1つ以上のチャネルをサブスクライブしてイベントを受信できます。
チャンネル名は文字列である必要があり、 /以外の特殊文字を含めてはなりません。以下は有効なチャネル名です。
transmit.broadcast( 'users'、{username: 'lanz'})transmit.broadcast( 'users/1'、{username: 'lanz'})transmit.broadcast( 'users/1/posts'、{username: 'ランツ '})チャンネルをプライベートとしてマークし、クライアントにサブスクライブすることを許可できます。認証は、コールバック関数を使用して行われます。
// start/transmit.tsimportタイプ{httpcontext} from '@adonisjs/core/http'transmit.authorize <{id:string}>(' users/: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}から'@adonisjs/transmit'import {redis}@adonisjs/transmit/Transports'export defanyconfig({{{{
トランスポート:{driver:redis({host:env.get( 'redis_host')、port:env.get( 'redis_port')、password:env.get( 'redis_password')、})
}})注記
redisドライバーを使用するときは、 ioredisをインストールしてください。
送信は、接続を生かし続けるためにクライアントのpingをサポートします。構成を変更して、pingを有効にすることができます。
// config/transmit.tsimport {defineconfig}@adonisjs/transmit'import {redis} from '@adonisjs/transmit/Transports'exportデフォルトdefineconfig({{{{
pinginterval: '1m'、})送信では、Emitteryを使用して、ライフサイクルイベントを放出します。 onメソッドを使用してイベントを聞くことができます。
transmit.on( 'connect'、({uid})=> {
console.log( `connected:$ {uid}`)})transmit.on( 'disconnect'、({uid})=> {
console.log( `disconnected:$ {uid}`)})transmit.on( 'broadcast'、({channel})=> {{
console.log( `チャンネル$ {channel}`)})transmit.on( 'subscribe'、({uid、channel})=> {
console.log( `subscribed $ {uid}から$ {channel}`)})transmit.on( 'unsubscribe'、({uid、channel})=> {{
console.log( `unsubscribed $ {uid} from $ {channel}`)})