a2aproject / a2aproject/a2a-rs

task: add WebSocket transport binding

Abierto
#14 2 comentarios 0 reacciones 0 asignados Ver en GitHub
enhancement
Lenguaje dominante
Rust
Estrellas
75
Forks
19
Merge medio
11 h 27 min
PR fusionados (30 d)
21

Descripción

Type: Task

## Summary
Add a WebSocket transport binding so the workspace supports a bidirectional A2A transport alongside the current JSON-RPC over HTTP, REST / HTTP+JSON, gRPC, and SSE streaming support.

## Why
The current bindings cover request/response transports plus server-driven streaming. WebSocket support would add a long-lived bidirectional option while still reusing the existing client transport registry, RequestHandler-based server boundary, and shared error and metadata conventions.

## Scope / plan
- [ ] Add a WebSocket protocol identifier and agent-card negotiation path
- [ ] Implement a client transport and register it in the client transport/factory layer
- [ ] Implement server wrapper(s) that translate framed WebSocket messages into RequestHandler operations
- [ ] Define framing rules, request correlation, and streaming event shapes over a bidirectional connection
- [ ] Define ServiceParams propagation during connection setup and per-message metadata handling
- [ ] Define A2AError mapping for protocol violations, close conditions, and operation failures
- [ ] Extend the helloworld transport end-to-end coverage and supporting docs as needed

## Acceptance criteria
- Agent cards can advertise WebSocket and the client factory can negotiate it without regressing existing binding selection
- Unary and streaming operations work over a single documented bidirectional connection
- Framing, request correlation, metadata propagation, and A2AError mapping are covered by tests
- End-to-end coverage includes happy-path flows and at least one close or protocol-error path

Parent feature: #12

Guía de contribución

Abrir la guía de contribución

Línea de trabajo

The issue outlines a plan to add WebSocket transport binding. Start by examining the existing client transport registry and RequestHandler-based server boundary. Look at the helloworld transport end-to-end coverage for examples. Implement the client transport and server wrapper, then define framing rules and error mapping. Ensure tests cover the new functionality.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
rust
Área
api, backend
Tipo de issue
Nueva funcionalidad
Dificultad
4/5
Tiempo estimado
3-5 días
Estado de actividad
Estancado
Claridad
Bastante claro
Aptitud para principiantes
45/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.