我在Apollo中的GraphQL订阅遇到了麻烦。我想订阅关于主题的添加“透视图”(基本上是在帖子上添加评论),我很确定我已经正确地设置了服务器。客户才是给我带来麻烦的人。(如果这个问题看起来很熟悉,我以前问过它,以为我得到了答案,但没有去)。下面是我的订阅模式:
type Subscription {
perspectiveAdded: Perspective
}
schema {
query: RootQuery
mutation: Mutation
subscription: Subscription
}
Subscription: {
perspectiveAdded(perspective) {
return perspective;
}
}
const pubsub = new PubSub();
const subscriptionManager = new SubscriptionManager({
schema,
pubsub,
setupFunctions: {
perspectiveAdded: (options, args) => {
perspectiveAdded: {
filter: (topic) => {
return topic
}
}
},
}
});
export { subscriptionManager, pubsub };
//...
return perspective.save((error, perspective) => {
if(error){
console.log(error);
}
//Publish it to Subscription channel
pubsub.publish('perspectiveAdded', perspective);
});
const PORT = process.env.PORT || 4000;
const server = createServer(app);
server.listen(PORT, ()=>{
new SubscriptionServer(
{
subscriptionManager: subscriptionManager,
onConnect: (connectionParams, webSocket) => {
console.log('Websocket connection established Lord Commander');
},
onSubscribe: (message, params, webSocket) => {
console.log("The client has been subscribed, Lord Commander", message, params);
},
onUnsubsribe: (webSocket) => {
console.log("Now unsubscribed, Lord Commander");
},
onDisconnect: (webSocket) => {
console.log('Now disconnected, Lord Commander');
}
},
{
server: server,
path: '/subscriptions',
});
console.log('Server is hot my Lord Commander!');
});
我也正确地连接了客户端,因为在我的终端中,我看到了“WebSocket connection Selected”消息。我被难倒的部分是如何实际调用订阅。根据Apollo的博客,我应该能够在GraphiQL中测试订阅(因为我使用的是Apollo服务器,现在是graphql-server-express),但是它说“resolve function for\”subscription.perspectiveadded\“return undefined”。
对于我的组件,我尝试连接“subscribe tomore”,但在浏览器控制台中,我得到了一个错误对象,该对象表示“从onsubscribe返回的params无效!返回值必须是一个对象!”我不确定它指的是哪个对象。
下面是我的订阅查询PerspectiveSubscription:
export default gql`
subscription {
perspectiveAdded {
id
content
}
}
`;
constructor(props){
super(props);
this.state = {};
this.subscription = null;
}
componentWillReceiveProps(nextProps) {
if (!this.subscription && !nextProps.data.loading) {
let { subscribeToMore } = this.props.data
this.subscription = subscribeToMore(
{
document: perspectiveSubscription,
updateQuery: (previousResult, { subscriptionData }) => {
if(!subscriptionData.data){
console.log('no new subscription data');
return previousResult;
}
const newPerspective = subscriptionData.data.perspectiveAdded;
console.log(newPerspective);
return Object.assign({}, previousResult, newPerspective);
}
}
)
}
从这里,我在我的终端中得到一条消息,说客户端已经被订阅,但我仍然得到上面提到的错误对象。几天来我一直在为这件事烦恼--你们看到我错过了什么吗?具体地说,在客户端有什么想法吗?谢谢大家!
服务器端似乎不正确,因为添加了订阅,而graphiql也没有提供正确的结果。
我建议您检查频道定义:
js prettyprint-override">const pubsub = new PubSub();
const subscriptionManager = new SubscriptionManager({
schema,
pubsub,
setupFunctions: {
perspectiveAdded: (options, args) => {
perspectiveAdded: {
filter: (perspective) => {
console.log(perspective); // check if object is correct
return true; // return true and not the object as long as you do not want to filter
}
}
},
}
});
export { subscriptionManager, pubsub };
我试图在Java项目中创建一个graphql客户机,我正在使用apollographql库。问题是,我无法使用版本不同于中央存储库的pom.xml获得依赖关系。另一件事是所有的例子都是用Gradle构建的。关于如何使用apollo库和maven项目创建一个简单的订阅客户机,您有什么示例或想法吗?我遇到的一个具体问题是,一旦下载了apollographql-runtime库,就没有“订阅”包了。我想
mysql会员订阅数据表的设计应该如何设计?产品有订阅商品和非订阅的,每次都只能购买一个。 订阅有1个月 3个月的 每次到期自动扣费。如果在一个月类购买了几个订阅商品 则扣费按照最新的一个 然后延长到期时间。其实是不是每次订阅都不需要生成新订单的 翻阅了其他资料都找不到很好的设计
订阅指过滤表(table)的规则,Canal 客户端发送给客户端订阅规则,那么服务端将会推送符合规则的表数据过来,采用正则匹配。 允许所有表:.\*\\\\..\*
我是新的数据流和发布子工具在GCP。 需要将prem过程中的电流迁移到GCP。 当前流程如下: 我们有两种类型的数据馈送 Full Feed–其adhoc作业–完整XML的大小约为100GB(单个XML–非常复杂的一个–完整的数据–ETL作业处理此XML并将其加载到约60个表中) 单独的ETL作业用于处理完整提要。ETL作业过程完全馈送并创建负载就绪文件,所有表将被截断并重新加载 源系统每30分钟
我想问以下问题:例如,考虑一下我购买专业订阅。过了一段时间(几个月左右)我决定取消我的订阅...那么我已经用CodenameOne开发的应用程序会发生什么呢?它们会继续在谷歌Play商店和/或苹果应用商店上提供吗?我主要关心的是推送通知功能...也就是说,Play Store和/或App Store中已经发布的应用程序是否会保持完整的功能?
假设我有10个产品,并想提供他们在一个订阅。 正如你所看到的,每个月的价格都不一样。这在木业商业中是可能的吗?(已订阅产品/计划,但每月支付金额不等) 我在WooCommerce文档中找不到任何讨论此场景的内容。 多谢了。
可用版本: >= 2.3.0 注意: 暂不支持键空间通知功能 Pika 发布订阅命令 以下为Pub/Sub发布订阅命令, 与Redis完全兼容 PUBSUB subcommand [argument [argument ...]] PUBLISH channel message SUBSCRIBE channel [channel ...] PSUBSCRIBE pattern [pattern
什么是 Subscription ? - Subscription 是表示可清理资源的对象,通常是 Observable 的执行。Subscription 有一个重要的方法,即 unsubscribe,它不需要任何参数,只是用来清理由 Subscription 占用的资源。在上一个版本的 RxJS 中,Subscription 叫做 "Disposable" (可清理对象)。 var observ