Subscription error: Error: Socket closed with event 1002 RSV1 set, bad opcode 7, bad MASK at Object.error
- Ngôn ngữ chính
- Go
- Star
- 10.8k
- Fork
- 1.3k
- Merge trung bình
- 2 ngày 36 phút
- Pull request đã merge (30 ngày)
- 26
Mô tả
I followed the gqlgen guide on setting up graphql in a Gin project and then tried to also add support for subscriptions.
Everything works flawlessly except for subscriptions.
When testing it out in the playground, I get the following error:
`Error: Socket closed with event 1002 RSV1 set, bad opcode 7, bad MASK at Object.error`
I am sure I am just missing something or made a mistake in my configuration, but for the life of me, cannot see where.
I created the following graphql handler which includes the AddTransport method for subscriptions:
```go
// graphql.go
func GraphqlHandler() gin.HandlerFunc {
// NewExecutableSchema and Config are in the generated.go file
// Resolver is in the resolver.go file
h := handler.NewDefaultServer(graph.NewExecutableSchema(graph.Config{Resolvers: &graph.Resolver{}}))
h.AddTransport(&transport.Websocket{}) // <== Added Subscription support
return func(c *gin.Context) {
h.ServeHTTP(c.Writer, c.Request)
}
}
// Defining the Playground handler
func PlaygroundHandler() gin.HandlerFunc {
h := playground.Handler("GraphQL", "/query")
return func(c *gin.Context) {
h.ServeHTTP(c.Writer, c.Request)
}
}
```
My routes file:
```go
// routes.go
func SetupRouter() *gin.Engine {
r := gin.Default()
// ... removed for brevity
r.Any("/query", graphql.GraphqlHandler())
r.GET("/", graphql.PlaygroundHandler())
// ... removed for brevity
return r
}
```
I would appreciate any assistance.
Many thanks!
### versions
- gqlgen version: `v0.17.45`
- go version: `go1.21.5 darwin/arm64`
Hướng dẫn đóng góp
Hướng nghiên cứu
Issue này liên quan đến một WebSocket subscription error trong thiết lập gqlgen với Gin. Bắt đầu bằng cách xem xét các file được sinh ra graphql.go và resolver.go, cùng cấu hình handler trong đoạn code được cung cấp. Xem tài liệu gqlgen về subscription setup và cấu hình transport.Websocket. Kiểm thử subscription endpoint bằng một WebSocket client để tái hiện lỗi, và kiểm tra xem có cấu hình sai nào trong Gin router hoặc gqlgen server setup hay không.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- go, graphql
- Lĩnh vực
- api, backend
- Loại issue
- Lỗi
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức độ hoạt động
- Đình trệ
- Độ rõ ràng
- Khá rõ ràng
- Mức phù hợp với người mới
- 35/100