99designs / 99designs/gqlgen

Can't return error after returning channel in subscription

Abierto
#1,118 15 comentarios 4 reacciones 0 asignados Ver en GitHub
websocket
Lenguaje dominante
Go
Estrellas
10.8k
Forks
1.3k
Merge medio
2 d 36 min
PR fusionados (30 d)
26

Descripción

### What happened?

Can't return an error after returning a channel.
For example, errors in redis-pubsub , gRPC client streaming, etc.

### What did you expect?

I want to return an error after returning a channel.

### Minimal graphql.schema and models to reproduce
```graphql
type Subscription {
messageAdded: Message!
}

type Message {
id: ID!
body: String!
}
```
```golang
func (r *subscriptionResolver) MessageAdded(ctx context.Context) (<-chan *model.Message, error) {
ch := make(chan *model.Message)
go func() {
// some kind of block processing (e.g.: gRPC client streaming)
stream, err := gRPCClientStreamRequest(ctx)
if err != nil {
log.Println(err) // i want to return this error
}
for {
m, err := stream.Recv()
if err == io.EOF {
return
}
if err != nil {
log.Println(err) // i want to return this error
}
ch <- m
}
}()

return ch, nil
}
```
### versions
- `gqlgen version`: 0.11.3
- `go version`: 1.13
- `dep or go modules`: go modules

Guía de contribución

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.