什么是 Lighthouse GraphQL 订阅最佳实践
What is the Lighthouse GraphQL subscriptions Best Practice
我在 2 周内尝试找到 Lighthouse 订阅的最佳实践。
但直到现在我都找不到最佳实践。
这是我的shema.graphql
type Subscription {
rsvHolidaySub(id: ID): Rsv_holiday }
type Mutation {
updateHoliday(id: ID!, holiday_type: Int!): Rsv_holiday @update
@broadcast(subscription: "rsvHolidaySub") }
type Rsv_holiday {
id: ID!
holiday_type: Int!
start_time: String!
end_time: String! }
当我像下面这样查询突变 updateHoliday
时
我希望从 @broadcast(subscription: "rsvHolidaySub")
调用 RsvHolidaySub 解析函数
所以我可以这样播
class RsvHolidaySub extends GraphQLSubscription
{
public function __construct() {}
public function authorize(Subscriber $subscriber, Request $request): bool {}
public function filter(Subscriber $subscriber, $root): bool {}
public function encodeTopic(Subscriber $subscriber, string $fieldName): string {}
public function decodeTopic(string $fieldName, $root): string {}
public function resolve($root, array $args, GraphQLContext $context, ResolveInfo $resolveInfo): Rsv_holiday
{
// I wanna call broadcast in here!!!!!!
broadcast(new SomeEvent);
return $root;
}
}
我不知道这是订阅的最佳做法。但是我觉得这个非常简单明了。
但即使我使用 redis + laravel-echo-server 或 beyondcode/laravel-websockets 安装了 websocket,
未调用解析函数。
所以我怀疑这是否可能。
我真的很想知道 Lighthouse 订阅最佳实践。请分享您的知识。
我触发了我所有的订阅from code。
但我也不使用那些 @create or @update
指令,而只是一种字段,所以我在代码中做我想做的一切,然后甚至使用任何其他数据触发订阅...适合我。
但我不知道 "best practices" 是什么。
我在 2 周内尝试找到 Lighthouse 订阅的最佳实践。
但直到现在我都找不到最佳实践。
这是我的shema.graphql
type Subscription {
rsvHolidaySub(id: ID): Rsv_holiday }
type Mutation {
updateHoliday(id: ID!, holiday_type: Int!): Rsv_holiday @update
@broadcast(subscription: "rsvHolidaySub") }
type Rsv_holiday {
id: ID!
holiday_type: Int!
start_time: String!
end_time: String! }
当我像下面这样查询突变 updateHoliday
时
我希望从 @broadcast(subscription: "rsvHolidaySub")
所以我可以这样播
class RsvHolidaySub extends GraphQLSubscription
{
public function __construct() {}
public function authorize(Subscriber $subscriber, Request $request): bool {}
public function filter(Subscriber $subscriber, $root): bool {}
public function encodeTopic(Subscriber $subscriber, string $fieldName): string {}
public function decodeTopic(string $fieldName, $root): string {}
public function resolve($root, array $args, GraphQLContext $context, ResolveInfo $resolveInfo): Rsv_holiday
{
// I wanna call broadcast in here!!!!!!
broadcast(new SomeEvent);
return $root;
}
}
我不知道这是订阅的最佳做法。但是我觉得这个非常简单明了。
但即使我使用 redis + laravel-echo-server 或 beyondcode/laravel-websockets 安装了 websocket, 未调用解析函数。
所以我怀疑这是否可能。
我真的很想知道 Lighthouse 订阅最佳实践。请分享您的知识。
我触发了我所有的订阅from code。
但我也不使用那些 @create or @update
指令,而只是一种字段,所以我在代码中做我想做的一切,然后甚至使用任何其他数据触发订阅...适合我。
但我不知道 "best practices" 是什么。