私はgraphqlサーバを持っていますが、エンティティのステータスが更新されるたびにイベントをトリガしようとしています。エンティティを更新するための突然変異があります。graphql-subscriptions
を使用して、サブスクライバが待機するように更新プログラムを公開しています。しかし、pubsub.subscribe(EVENT_NAME)
が変更を受け取りましたが、それをサブスクリプションリゾルバに統合すると、更新がトリガされません。Apolloサブスクリプションが動作しない
簡潔にするため、問題に関係のないコードの部分を編集しました。
マイリゾルバ:
Mutation: {
updateStatus(_, { id, status, hash }) {
return repository.updateStatus(id, status, hash);
}
},
Subscription: {
updatedStatus: {
subscribe:() => pubsub.asyncIterator('updatedStatus'),
}
},
マイリポジトリ:
export const updateStatus = async function(id: String, status: String, hash: String) {
try {
const res = await fetch(`${baseURL}/article/${id}/status?publish_hash=${hash}`, {
headers,
method: 'PATCH',
body: JSON.stringify({ status })
});
const article = await fetchSingleArticle(id, 'XML', headers.channel, false);
await pubsub.publish('updatedStatus', article);
return article;
} catch (e) {
console.log(e.message);
}
}
マイスキーマ:
type Mutation {
updateStatus(id: ID!, status: PublishingStatus = PUBLISHING, hash: String): Article
}
type Subscription {
updatedStatus(id: ID!): Article
}
schema {
query: Query
mutation: Mutation
subscription: Subscription
}
これをテストするために、私はちょうど拾っされ、graphiqlを使用していますWebSocketの接続は問題ありません。
article
(図のように)と{ updatedStatus: article }
の両方を使用して公開しようとしましたが、いずれも取得されていないようです。
前述のように、pubsub.subscribe('updatedStatus')
は変更を受け取ります。したがって、この問題はサブスクリプション・リゾルバに関連しているようです。
私は、次のドキュメントをオフつもりです:http://dev.apollodata.com/tools/graphql-subscriptions/setup.html#setup