Aller au contenu

@platform/chat

Emplacement : modules/application/chat/ Dépendances : @platform/core, @platform/socket, @platform/doc, @platform/schema

Vue d'ensemble

@platform/chat fournit un système de messagerie en temps réel utilisant Socket.io. Ce module gère :

  • L'envoi et la réception de messages en temps réel via WebSocket.
  • La persistance des messages dans MongoDB via @platform/doc.
  • Un service de chat enregistré comme service Socket.io.
  • L'interface utilisateur de messagerie avec un écran de chat interactif.

Contextes

Contexte Point d'entrée Contenu
client src/client/index.ts ChatModule, ChatPage, ChatScreen
server src/server/index.ts ServerChatService, publication des messages
common src/common/index.ts ChatMessageSchema, ChatService, publications, i18n

Common API

import {
  ChatMessageSchema, chatPublication
} from '@platform/chat/common'
import type { ChatMessage, ChatService } from '@platform/chat/common'
Export Description
ChatMessageSchema Schéma Zod pour les messages de chat
ChatMessage Type TypeScript pour un message de chat
chatPublication Définition de publication pour les messages de chat
ChatService Interface du service de chat (méthodes appelables par le client)

Server

Le serveur publie les messages de chat triés par horodatage et enregistre le service de chat pour les communications Socket.io :

import { ServerDocService } from '@platform/doc/server'
import { ServerService } from '@platform/socket/server'

ServerDocService.publish(chatPublication, () => [{ $sort: { timestamp: -1 } }])
ServerService.register('chat', ServerChatService)

Client

Le module exporte un ChatModule compatible avec le shell Application :

import { ChatModule } from '@platform/chat/client'

Composants

Export Description
ChatModule Descripteur du module pour le shell d'application
ChatPage Page principale du chat
ChatScreen Écran de messagerie interactif

Exemple d'utilisation

import { Application } from '@platform/core/client'
import { ChatModule } from '@platform/chat/client'

export function App() {
  return (
    <Application
      name='MonApp'
      logo='/logo.png'
      i18n={i18n}
      modules={[ChatModule]}
    />
  )
}