Skip to content
Meeko
Type to search the guides and the API reference. Open it from any page with / or Ctrl K; move with the arrow keys and open a result with Enter.
Get started

Contents

On this page

Not translated yet

This page has not been translated into English yet, so it is shown in Spanish.

SocketChannelDefinition

interfaz

Definición de un canal Socket de server/socket/<nombre>.ts: schemas por dirección, guardas y handlers de los eventos del cliente. Se declara con defineSocketChannel.

ts
import type { SocketChannelDefinition } from "@meekojs/meeko/server";

Source code src/server/socket/definitions.ts:22

Declaración #

ts
interface SocketChannelDefinition<C extends SchemaMap, S extends SchemaMap, TServices = unknown> {
	clientToServer: C
	serverToClient: S
	auth?: 'required' | 'optional'
	authorize?: (args: { context: RequestContext<TServices>; roomId?: string }) => boolean | Promise<boolean>
	authorizeEvent?: (args: { event: keyof C & string; payload: unknown; context: RequestContext<TServices>; roomId?: string }) => boolean | Promise<boolean>
	authorizeSend?: (args: { event: keyof S & string; payload: unknown; context: RequestContext<TServices>; roomId?: string }) => boolean | Promise<boolean>
	handlers?: { [K in keyof C]?: (args: { payload: Output<C[K]>; context: RequestContext<TServices>; roomId?: string; emit: <E extends keyof S & string>(event: E, payload: Output<S[E]>) => Promise<void> }) => void | Promise<void> }
}

Type parameters #

C extends SchemaMap

Schemas de los eventos que envía el cliente.

S extends SchemaMap

Schemas de los eventos que envía el servidor.

TServices = unknown

Tipo de los servicios.

Example #

ts
import type { Schema, SocketChannelDefinition } from "@meekojs/meeko/server";

type Chat = SocketChannelDefinition<{ message: Schema<{ text: string }> }, { message: Schema<{ text: string }> }>;

Propiedades #

clientToServer #

propiedad

clientToServer: C

Schemas de los eventos que envía el cliente; deben venir de shared/.

serverToClient #

propiedad

serverToClient: S

Schemas de los eventos que envía el servidor; deben venir de shared/.

auth #

propiedad opcional

auth?: 'required' | 'optional'

"required" rechaza el handshake sin sesión con 401.

authorize #

propiedad opcional

authorize?: (args: { context: RequestContext<TServices>; roomId?: string }) => boolean | Promise<boolean>

Autoriza el handshake y cada entrega; false responde 403.

authorizeEvent #

propiedad opcional

authorizeEvent?: (args: { event: keyof C & string; payload: unknown; context: RequestContext<TServices>; roomId?: string }) => boolean | Promise<boolean>

Autoriza cada evento entrante.

authorizeSend #

propiedad opcional

authorizeSend?: (args: { event: keyof S & string; payload: unknown; context: RequestContext<TServices>; roomId?: string }) => boolean | Promise<boolean>

Filtra cada envío a un peer: con false no lo recibe y sigue conectado.

handlers #

propiedad opcional

handlers?: { [K in keyof C]?: (args: { payload: Output<C[K]>; context: RequestContext<TServices>; roomId?: string; emit: <E extends keyof S & string>(event: E, payload: Output<S[E]>) => Promise<void> }) => void | Promise<void> }

Handlers de los eventos del cliente, con el payload validado y emit hacia ese cliente.

See also #

Was this page helpful?

Add a comment

It is sent when you choose “Yes” or “No”. Only the page, your answer and the comment are stored: no cookies and no personal data.

0 of 2000 characters

Edit on GitHub: packages/meeko/src/server/socket/definitions.ts