Beh*_*adV 12 graphql graphql-subscriptions nestjs
我正在尝试升级我们的 NestJS GraphQL 订阅服务器以利用graphql-ws而不是当前的subscriptions-transport-ws(如NestJS 文档所建议的)。我将NestJS版本升级到
"@nestjs/core": "^8.0.6",
"@nestjs/graphql": "^9.0.4",
"@nestjs/platform-express": "^8.0.6",
"graphql": "^15.5.3",
"graphql-tools": "^8.2.0",
"apollo-server-express": "^3.3.0",
Run Code Online (Sandbox Code Playgroud)
之后,我将subscriptions选项添加到App.Module:
GraphQLModule.forRoot({
autoSchemaFile: true,
sortSchema: true,
playground: true,
installSubscriptionHandlers: true,
subscriptions: {
'graphql-ws': true
},
}),
Run Code Online (Sandbox Code Playgroud)
但是,当我(在操场上)订阅以前有效的订阅时,我得到:
{
"error": "Could not connect to websocket endpoint ws://localhost:8880/graphql. Please check if the endpoint url is correct."
}
Run Code Online (Sandbox Code Playgroud)
在控制台中我得到:
WebSocket protocol error occured. It was most likely caused due to an unsupported subprotocol "graphql-ws" requested by the client. graphql-ws implements exclusively the "graphql-transport-ws" subprotocol, please make sure that the client implements it too.
Run Code Online (Sandbox Code Playgroud)
我尝试过的事情:
graphql-ws包installSubscriptionHandlers从配置中删除该选项graphql-ws配置而不是传递trueWebSocket Test ClientGoogle Chrome 扩展程序而不是 Playground但没有一个奏效。抱歉发了这么长的帖子。我怎样才能解决这个问题?
小智 12
这将完成这项工作:
subscriptions: {
'graphql-ws': true,
'subscriptions-transport-ws': true,
},
Run Code Online (Sandbox Code Playgroud)
正如文档中提到的:
暗示
您还可以同时使用这两个包(subscriptions-transport-ws 和 graphql-ws),例如,为了向后兼容。
| 归档时间: |
|
| 查看次数: |
9506 次 |
| 最近记录: |