2017-12-27 6 views
0

のコンテキストオブジェクトを定義するには:どのように我々はこのようなコンテキストオブジェクトを定義することができ、通常のgraphqlサーバーでgraphqlサブスクリプションサーバー

app.use('/graphql', graphqlExpress(async (req) => { 
    return { 
     schema, 
     context: { 
     app, 
     params, 
     } 
    }; 
    })); 

**サブスクリプションサーバー**

どのように私は同じことを行うことができますサブスクリプションサーバー? (ハイブリッドhttp/websocketアプローチを行う)。ドキュメントから解決策を見つけることができないようです。

new SubscriptionServer({ 
    execute, 
    subscribe, 
    schema, 
    onConnect: (connectionParams, webSocket) => { 
     console.log(connectionParams); 
    } 
    }, { 
    server, 
    path: '/subscriptions' 
    }); 

答えて

0

あなたはexecute関数の前にミドルウェアを追加し、サブスクリプションを解決する前に必要なコンテキストを追加することができます。

それは次のようになります。あなたはexecute関数の引数で要求からのすべてのデータを持って見ることができるように

const middleware = (args) => new Promise((resolve, reject) => { 
 
     const [schema, document, root, context, variables, operation] = args; 
 
     
 
     context.app = <your app parameter>; 
 
     context.params = <your params>; 
 
     
 
     resolve(args); 
 
}); 
 

 

 
SubscriptionServer.create({ 
 
    schema, 
 
    subscribe, 
 
    execute: (...args) => middleware(args).then(args => { return execute(...args); }) }, 
 
    { 
 
    server: httpServer, 
 
    path: "/subscription", 
 
    }, 
 
);

関連する問題