WebSockets: a server-side handle to a room, to broadcast to or close its connections from other server code
Mantenedores costumam responder em até 1 dia
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 5/5
- Tempo estimado
- Mais de uma semana
- Facilidade para iniciantes
- 30/100
- Tipo de issue
- Funcionalidade
- Clareza
- Razoavelmente clara
- Status de atividade
- Ativa
- Stack de tecnologia
- typescript
- Domínio
- backend, distributed-systems
Direção de pesquisa
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.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
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.
- Linguagem predominante
- TypeScript
- Estrelas
- 627
- Forks
- 66
- Merge médio
- 13h 57min
- PRs com merge (30d)
- 194
Preparar o ambiente
Este projeto não oferece contêiner de desenvolvimento, Dockerfile nem guia de contribuição, então a configuração fica por sua conta: comece pelo README e veja nosso guia da primeira contribuição para os passos gerais.
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de voidzero-dev/void
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 62/100
voidzero-dev/void#677 ·
Mantenedores costumam responder em até 1 dia
-
Export a guard for `VoidActionError` at every statusTalvez já em andamento @karthickeyan-dev assumiu hoje. Aberta
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 78/100
voidzero-dev/void#714 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 72/100
voidzero-dev/void#713 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
`@void/solid`: `useParams()` keeps the first page's params after client-side navigationTalvez já em andamento @yujiym assumiu hoje. Aberta
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 20/100
voidzero-dev/void#708 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 28/100
voidzero-dev/void#692 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
Todas as issues de voidzero-dev/void
Issues semelhantes
-
[Bug] Pod detail shows CPU usage ten times too high, and throws on decimal memory suffixesTalvez já em andamento @RaphaelFakhri assumiu hoje. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 84/100
Mantenedores costumam responder em até 11 dias
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 84/100
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 76/100
remotion-dev/remotion#12957 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 66/100
tyrasd/overpass-turbo#871 ·
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 67/100
Mantenedores costumam responder em até 1 dia