WebSockets: a server-side handle to a room, to broadcast to or close its connections from other server code
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 30/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Bastante claro
- Estado de actividad
- Activo
- Stack tecnológico
- typescript
- Área
- backend, distributed-systems
Línea de trabajo
Start by reading the defineRoom API for *.ws.ts routes and the existing onRequest approach described in the issue; inspect how the generated binding in void.lock.json identifies a room instance. The proposal calls for a supported server-side handle usable from route handlers, auth hooks, queues, and cron jobs. Done means external code can address the same room instance as a client's connect() and use it to broadcast or close selected connections.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Void 1.5.0, Cloudflare target, defineRoom in a *.ws.ts route.
We need to reach a room from server code outside its own hooks. Our case is closing a user's open sockets when their Better Auth session is revoked: databaseHooks.session.delete.after fires on every revoke, sign-out and user deletion, but from there nothing in Void's API reaches the room's Durable Object. The docs only suggest re-checking records in onMessage and closing, which leaves an idle socket of a revoked session open until its next frame, and costs a database read per frame.
The only way we found is undocumented: the binding name Void generates (from void.lock.json), idFromName('<param>=<value>'), and a request handled in onRequest. We do not want to depend on those internals.
Proposal: a server-side handle to a room instance, for example:
import { getRoom } from 'void/ws';
const room = getRoom('/relay/:accountId', { params: { accountId } });
await room.broadcast(event);
await room.close({ code: 4001, reason: 'session revoked', filter: (connection) => connection.state.sessionId === id });
usable from route handlers, auth hooks, queues and cron jobs, and addressing the same instance a client's connect() would.
- Lenguaje dominante
- TypeScript
- Estrellas
- 627
- Forks
- 66
- Merge medio
- 14 h 38 min
- PR fusionados (30 d)
- 179
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de voidzero-dev/void
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
voidzero-dev/void#677 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 4/5 3-5 días Aptitud para principiantes 52/100
voidzero-dev/void#686 ·
Los mantenedores suelen responder en 1 día
-
`VoidActionError.message` ignores the server's message, though the docs show it to usersPosiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 52/100
voidzero-dev/void#680 ·
Los mantenedores suelen responder en 1 día
-
`withValidator({ body })` rejects the multipart bodies that `useForm` and `action()` send for filesAbierto
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
voidzero-dev/void#679 ·
Los mantenedores suelen responder en 1 día
-
`Link`: mark the link to the current page (`aria-current`, `data-active`)Posiblemente ocupada @yangshun la tomó hoy. Abierto
Dificultad 4/5 3-5 días Aptitud para principiantes 25/100
voidzero-dev/void#676 · 2 comentarios · 1 asignado ·
Los mantenedores suelen responder en 1 día
Todos los issues de voidzero-dev/void
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 66/100
riverqueue/river#1576 ·
Los mantenedores suelen responder en 1 día
-
[bug] A prompt queued during a run is assessed without its textPosiblemente ocupada @jwiegley la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
DevMortimer/pi-warden#211 ·
Los mantenedores suelen responder en 1 día
-
enhancement
Dificultad 1/5 Menos de una hora Aptitud para principiantes 84/100
mattermost/compass-design#191 ·
Los mantenedores suelen responder en 1 día
-
Add unit tests for the organization admin role checkPosiblemente ocupada @SaffuSafwan la tomó hoy. Abiertoarea/core good first issue help wanted
Dificultad 1/5 Menos de una hora Aptitud para principiantes 90/100
elmohq/elmo#1095 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
HorusGoul/trizum#559 · 1 comentario ·
Los mantenedores suelen responder en 1 día