メインコンテンツまでスキップ

Chat Adapter

チャットアダプタはMongoDBを簡単なドキュメント保存レイヤーとして使用して、ユーザー同士に ソケットを使ったリアルタイムのチャット機能を実装しています。

機能

  • リアルタイムのメッセージ送受信
    • ユーザーがリアルタイムで相互にメッセージを送信・受信できる機能を提供します
  • トピックの管理
    • チャットの対象をグループ化するために、トピックを作成・管理できます。例えば、特定のイベントやテーマに関するトピックを作成できます
  • サブスクリプションの管理
    • ユーザーが特定のトピックに対してサブスクリプション(購読)を行うことができます。これにより、ユーザーは関心のあるトピックに参加し、リアルタイムのディスカッションに参加できます
  • メッセージ履歴の保存
    • チャットサービスは、送受信されたメッセージの履歴を保存します。ユーザーは、過去のメッセージを検索・参照できます

インストール手順

  1. 前提条件
パッケージバージョン
node18+
MongoDB5+
Nodeblocks User Service1.1.0+
  1. パッケージをインストール

リポジトリを作成して、このパッケージを追加

mkdir my-chat-service
npx gts init -y
npm install --save @basaldev/blocks-messaging-service

環境関数を設置する必要があります。クイックスタートガイドをサンプルとして参照してください。

  1. コードを導入
備考

下記の例はCORSの許可リストにlocalhostを追加する例です。お使いになる予定のドメインを配列に追加してください。

corsOptions: {
credentials: true,
origin: ['http://localhost', 'http://your-domain.com'],
},

src/index.tsに下記を入れてください:

import {
defaultChat,
createNodeblocksMessagingApp,
} from '@basaldev/blocks-messaging-service';
import {security} from '@basaldev/blocks-backend-sdk';

async function main() {
let adapter = await defaultChat.createChatDefaultAdapter(
{
allowedAttachmentContentTypes: ['jpeg', 'png'],
authEncSecret: getEnvString('AUTH_ENC_SECRET', ''),
authSignSecret: getEnvString('AUTH_SIGN_SECRET', ''),
authenticate: security.defaultCookieAuth,
maxAttachmentSizeMB: Number(getEnvString('MAX_FILE_SIZE_MB', '10')),
},
{
bucket: getEnvString('BUCKET_NAME', ''),
db: getEnvString('DATABASE_URL', ''),
organizationAPI: getEnvString('ORGANIZATION_ENDPOINT', ''),
socketAPI: 'socketIO',
userAPI: {
admin: getEnvString('ADMIN_USER_ENDPOINT', ''),
expand: getEnvString('DEMAND_USER_ENDPOINT', ''),
},
}
);

const chatApp = createNodeblocksMessagingApp({
corsOptions: {
credentials: true,
origin: ['http://localhost'],
},
enableCookieParser: true,
});

const chatServer = await chatApp.startService({
PORT: Number(getEnvString('PORT', '8080')),
adapter,
env: 'development',
});

await (
adapter.dependencies.socketAPI as defaultChat.DefaultChatSocketIOApi
).startServer({
env: 'development',
server: chatServer,
});
}

void main();

API Reference